├── src
├── models
│ ├── IsModifed.ts
│ ├── global.ts
│ ├── monaco.ts
│ ├── model.ts
│ ├── squareModel.ts
│ └── applicationDev.ts
├── services
│ ├── assistant.ts
│ └── event.ts
├── components
│ ├── base
│ │ ├── Tabs
│ │ │ └── index.tsx
│ │ ├── EcoShareStatus
│ │ │ └── index.less
│ │ ├── McpStatus
│ │ │ ├── index.less
│ │ │ ├── images.constants.ts
│ │ │ └── images
│ │ │ │ └── icon_initialization.svg
│ │ ├── SvgIcon
│ │ │ └── styles.less
│ │ ├── AgentType
│ │ │ ├── images
│ │ │ │ ├── icon_table.svg
│ │ │ │ ├── icon_knowledge.svg
│ │ │ │ └── icon_workflow.svg
│ │ │ ├── images.constants.ts
│ │ │ └── index.less
│ │ ├── HoverScrollbar
│ │ │ └── index.less
│ │ ├── CopyButton
│ │ │ └── index.less
│ │ ├── AuthorInfo
│ │ │ └── index.less
│ │ ├── FileTypeIcon
│ │ │ └── index.less
│ │ ├── McpInstallType
│ │ │ └── index.less
│ │ ├── SecondMenuItem
│ │ │ └── SubItem.tsx
│ │ └── index.ts
│ ├── AssistantOptimizeModal
│ │ └── index.tsx
│ ├── CustomFormModal
│ │ └── index.less
│ ├── LabelIcon
│ │ ├── index.less
│ │ └── index.tsx
│ ├── CreateAgent
│ │ └── index.less
│ ├── custom
│ │ ├── InfiniteScrollDiv
│ │ │ └── index.less
│ │ ├── TooltipIcon
│ │ │ └── index.less
│ │ ├── Loading
│ │ │ ├── index.less
│ │ │ └── index.tsx
│ │ ├── SelectList
│ │ │ └── index.less
│ │ └── CustomInputNumber
│ │ │ └── index.less
│ ├── SliderNumber
│ │ └── index.less
│ ├── AgentSidebar
│ │ ├── TimedTask
│ │ │ └── CreateTimedTask
│ │ │ │ └── index.less
│ │ ├── StatisticsInfo
│ │ │ ├── index.less
│ │ │ └── index.tsx
│ │ └── AgentConversation
│ │ │ └── HistoryConversation
│ │ │ └── index.less
│ ├── CreatedItem
│ │ └── index.less
│ ├── business-component
│ │ ├── CopyToSpaceComponent
│ │ │ └── index.less
│ │ └── index.ts
│ ├── LabelStar
│ │ ├── index.less
│ │ └── index.tsx
│ ├── McpCollapseComponentList
│ │ └── index.less
│ ├── CreateWorkflow
│ │ └── index.less
│ ├── FormListItem
│ │ ├── Reference.tsx
│ │ └── components
│ │ │ └── TreeColumnHeader.tsx
│ ├── AgentChatEmpty
│ │ └── index.less
│ ├── PluginConfigTitle
│ │ └── index.less
│ ├── OverrideTextArea
│ │ └── index.less
│ ├── ParamsNameLabel
│ │ ├── index.less
│ │ └── index.tsx
│ ├── SubmitButton
│ │ └── index.less
│ ├── SiteFooter
│ │ ├── index.less
│ │ └── index.tsx
│ ├── EcosystemCard
│ │ └── SharedIcon
│ │ │ ├── index.less
│ │ │ ├── images.constants.ts
│ │ │ └── images
│ │ │ └── icon_rejected.svg
│ ├── ChatView
│ │ ├── ChatSampleBottom
│ │ │ └── index.less
│ │ ├── AttachFile
│ │ │ └── index.less
│ │ ├── ChatBottomDebug
│ │ │ └── index.less
│ │ └── ChatBottomMore
│ │ │ └── index.less
│ ├── CreateKnowledge
│ │ ├── SkillListEmpty
│ │ │ ├── index.less
│ │ │ └── index.tsx
│ │ └── index.less
│ ├── ExpandTextArea
│ │ └── index.less
│ ├── NoMoreDivider
│ │ ├── index.less
│ │ └── index.tsx
│ ├── editableTitle
│ │ └── index.less
│ ├── PluginCardList
│ │ └── index.less
│ ├── CustomPopover
│ │ └── index.less
│ ├── VersionHistory
│ │ ├── index.less
│ │ └── PublishRecordItem
│ │ │ └── index.less
│ ├── ConditionRender
│ │ └── index.tsx
│ ├── ShowStand
│ │ └── index.less
│ ├── ChatTitleActions
│ │ └── index.less
│ ├── Card
│ │ ├── CardFour
│ │ │ └── index.less
│ │ ├── CardTwo
│ │ │ └── index.less
│ │ ├── CardThree
│ │ │ ├── index.less
│ │ │ └── index.tsx
│ │ └── CardOne
│ │ │ └── index.less
│ ├── EcosystemDetailDrawer
│ │ └── ActivatedIcon.tsx
│ ├── ModelSetting
│ │ └── type.ts
│ ├── TiptapVariableInput
│ │ ├── index.ts
│ │ └── hooks
│ │ │ └── useMentionItems.ts
│ ├── RecommendList
│ │ └── index.less
│ ├── MarkdownCustomProcess
│ │ └── SeeDetailModal.less
│ ├── CodeEditor
│ │ └── index.less
│ ├── UploadAvatar
│ │ └── index.less
│ ├── ChatInputHome
│ │ └── ManualComponentItem
│ │ │ └── index.less
│ ├── MoveCopyComponent
│ │ └── index.less
│ └── ToggleWrap
│ │ └── index.less
├── pages
│ ├── 404
│ │ ├── index.less
│ │ └── index.tsx
│ ├── SpaceMcpManage
│ │ └── McpComponentItem
│ │ │ └── index.less
│ ├── TeamSetting
│ │ └── index.less
│ ├── GlobalModelManage
│ │ └── index.less
│ ├── SpaceKnowledge
│ │ ├── RawSegmentInfo
│ │ │ ├── DocRename
│ │ │ │ └── index.less
│ │ │ └── index.less
│ │ ├── LocalCustomDocModal
│ │ │ ├── TextFill
│ │ │ │ └── index.less
│ │ │ ├── UploadFile
│ │ │ │ └── index.less
│ │ │ ├── DataProcess
│ │ │ │ └── index.less
│ │ │ └── CreateSet
│ │ │ │ └── index.less
│ │ ├── QaBatchModal
│ │ │ └── index.less
│ │ ├── index.less
│ │ └── DocWrap
│ │ │ ├── index.less
│ │ │ └── DocItem
│ │ │ └── index.less
│ ├── SpaceLibrary
│ │ ├── ComponentItem
│ │ │ └── index.less
│ │ └── CreateModel
│ │ │ ├── IntranetModel
│ │ │ ├── index.less
│ │ │ └── index.tsx
│ │ │ └── IntranetServerCommand
│ │ │ └── index.less
│ ├── AppDev
│ │ └── components
│ │ │ ├── ChatArea
│ │ │ └── components
│ │ │ │ └── AppDevMarkdownCMDWrapper
│ │ │ │ └── index.less
│ │ │ ├── DataResourceList
│ │ │ └── index.less
│ │ │ ├── ToggleDesignBtn
│ │ │ └── index.less
│ │ │ ├── index.ts
│ │ │ └── PageEditModal
│ │ │ └── index.less
│ ├── SpaceDevelop
│ │ ├── ApplicationItem
│ │ │ ├── index.less
│ │ │ ├── CollectStar
│ │ │ │ └── index.less
│ │ │ └── ApplicationHeader
│ │ │ │ └── index.less
│ │ └── AnalyzeStatistics
│ │ │ └── index.less
│ ├── EditAgent
│ │ ├── AgentArrangeConfig
│ │ │ ├── KnowledgeTextList
│ │ │ │ ├── index.less
│ │ │ │ └── KnowledgeSetting
│ │ │ │ │ └── index.less
│ │ │ ├── LongMemoryContent
│ │ │ │ └── index.less
│ │ │ ├── ConfigOptionsHeader
│ │ │ │ ├── index.less
│ │ │ │ └── index.tsx
│ │ │ ├── EventList
│ │ │ │ └── index.less
│ │ │ ├── VariableList
│ │ │ │ └── index.less
│ │ │ ├── ComponentSettingModal
│ │ │ │ ├── CardBind
│ │ │ │ │ ├── index.less
│ │ │ │ │ ├── CardModeSetting
│ │ │ │ │ │ └── index.less
│ │ │ │ │ └── BindDataSource
│ │ │ │ │ │ └── index.less
│ │ │ │ ├── InvokeType
│ │ │ │ │ └── index.less
│ │ │ │ ├── OutputWay
│ │ │ │ │ └── index.less
│ │ │ │ ├── AsyncRun
│ │ │ │ │ └── index.less
│ │ │ │ └── ExceptionHanding
│ │ │ │ │ └── index.less
│ │ │ ├── PageSettingModal
│ │ │ │ ├── HomeIndex
│ │ │ │ │ └── index.less
│ │ │ │ └── VisibleToLLM
│ │ │ │ │ └── index.less
│ │ │ ├── EventBindModal
│ │ │ │ └── index.less
│ │ │ ├── OpenRemarksEdit
│ │ │ │ ├── GuidQuestionSetModal
│ │ │ │ │ └── index.less
│ │ │ │ └── index.less
│ │ │ ├── CreateVariables
│ │ │ │ └── index.less
│ │ │ └── index.less
│ │ ├── AgentModelSetting
│ │ │ └── index.less
│ │ ├── DebugDetails
│ │ │ └── NodeDetails
│ │ │ │ └── index.less
│ │ ├── ArrangeTitle
│ │ │ └── index.less
│ │ ├── PreviewAndDebug
│ │ │ ├── index.less
│ │ │ └── PreviewAndDebugHeader
│ │ │ │ └── index.less
│ │ └── SystemTipsWord
│ │ │ └── index.less
│ ├── SpaceTable
│ │ ├── TableOperationBar
│ │ │ └── index.less
│ │ ├── AddAndModify
│ │ │ └── index.less
│ │ ├── index.less
│ │ ├── StructureTable
│ │ │ ├── ClearDataTooltip
│ │ │ │ └── index.tsx
│ │ │ └── index.less
│ │ └── TableHeader
│ │ │ └── index.less
│ ├── SystemConfig
│ │ ├── index.less
│ │ └── BaseTab
│ │ │ └── index.less
│ ├── Chat
│ │ ├── DropdownChangeName
│ │ │ └── index.less
│ │ └── ShowArea
│ │ │ └── index.less
│ ├── Square
│ │ └── SquareComponentInfo
│ │ │ └── index.less
│ ├── SpaceLog
│ │ ├── index.less
│ │ ├── LogDetails
│ │ │ └── NodeDetails
│ │ │ │ └── index.less
│ │ └── LogHeader
│ │ │ └── index.less
│ ├── Login
│ │ └── SiteProtocol
│ │ │ ├── index.less
│ │ │ └── index.tsx
│ ├── SpacePageDevelop
│ │ ├── ReverseProxyModal
│ │ │ └── ReverseProxyContentConfig
│ │ │ │ └── index.less
│ │ ├── PathParamsConfigModal
│ │ │ └── PathParamsConfigContent
│ │ │ │ └── index.less
│ │ └── PageCreateModal
│ │ │ └── index.less
│ ├── Antv-X6
│ │ ├── component
│ │ │ ├── nodeItem.less
│ │ │ └── pluginNode.less
│ │ └── components
│ │ │ └── NewSkill
│ │ │ └── SettingModal.less
│ ├── Home
│ │ └── DraggableHomeContent
│ │ │ ├── constants.ts
│ │ │ └── types.ts
│ ├── SpaceMcpCreate
│ │ ├── index.less
│ │ └── McpHeader
│ │ │ └── index.less
│ ├── SpaceMcpEdit
│ │ ├── index.less
│ │ └── McpEditItem
│ │ │ ├── index.less
│ │ │ └── index.tsx
│ └── SpacePluginTool
│ │ └── index.less
├── assets
│ ├── images
│ │ ├── copy.png
│ │ ├── logo.png
│ │ ├── menu.png
│ │ ├── pic.jpeg
│ │ ├── avatar.png
│ │ ├── robot.png
│ │ ├── share.png
│ │ ├── doc_image.jpg
│ │ ├── mcp_image.png
│ │ ├── personal.png
│ │ ├── agent_image.png
│ │ ├── debug_image.png
│ │ ├── fold_image.png
│ │ ├── home_image.png
│ │ ├── iframe-copy.png
│ │ ├── model_image.png
│ │ ├── plugin_image.png
│ │ ├── square_image.png
│ │ ├── system_image.png
│ │ ├── team_image.png
│ │ ├── team_image1.png
│ │ ├── database_image.png
│ │ ├── guid_question.png
│ │ ├── teach_material.png
│ │ ├── variable_image.png
│ │ ├── workflow_image.png
│ │ ├── ecosystem_market.png
│ │ ├── home_image_active.png
│ │ ├── knowledge_image.png
│ │ ├── send_image_gray.png
│ │ ├── theme
│ │ │ ├── nav-style1.png
│ │ │ ├── nav-style2.png
│ │ │ ├── dark-navbar-bg.png
│ │ │ └── light-navbar-bg.png
│ │ ├── workspace_image.png
│ │ ├── agent_conversation.png
│ │ ├── square_banner_image.png
│ │ ├── square_image_active.png
│ │ ├── system_image_active.png
│ │ ├── square_banner_image2.png
│ │ ├── teach_material_active.png
│ │ ├── workspace_image_active.png
│ │ └── ecosystem_market_active.png
│ ├── icons
│ │ ├── files
│ │ │ ├── doc.png
│ │ │ ├── pdf.png
│ │ │ ├── ppt.png
│ │ │ ├── excel.png
│ │ │ └── media.png
│ │ ├── chat
│ │ │ ├── stop.svg
│ │ │ ├── send.svg
│ │ │ ├── add.svg
│ │ │ ├── clock.svg
│ │ │ ├── info.svg
│ │ │ ├── chat.svg
│ │ │ ├── close_regular.svg
│ │ │ ├── collected.svg
│ │ │ ├── close_fill.svg
│ │ │ ├── user.svg
│ │ │ ├── network.svg
│ │ │ ├── close.svg
│ │ │ └── copy.svg
│ │ ├── design
│ │ │ ├── border_width.svg
│ │ │ ├── radius.svg
│ │ │ ├── border_left.svg
│ │ │ ├── border_top.svg
│ │ │ ├── border_bottom.svg
│ │ │ ├── border_right.svg
│ │ │ ├── margin_top.svg
│ │ │ ├── margin_bottom.svg
│ │ │ ├── margin_right.svg
│ │ │ ├── margin_left.svg
│ │ │ ├── margin_vertical.svg
│ │ │ ├── align_center.svg
│ │ │ ├── align_justify.svg
│ │ │ ├── align_left.svg
│ │ │ ├── align_right.svg
│ │ │ ├── margin_horizontal.svg
│ │ │ ├── padding_bottom.svg
│ │ │ ├── padding_left.svg
│ │ │ ├── padding_right.svg
│ │ │ ├── padding_top.svg
│ │ │ ├── padding_vertical.svg
│ │ │ ├── padding_horizontal.svg
│ │ │ ├── opacity.svg
│ │ │ ├── overline.svg
│ │ │ ├── tabular_numbers.svg
│ │ │ └── reset.svg
│ │ ├── common
│ │ │ ├── plus.svg
│ │ │ ├── caret_up.svg
│ │ │ ├── caret_down.svg
│ │ │ ├── caret_left.svg
│ │ │ ├── caret_right.svg
│ │ │ ├── more.svg
│ │ │ ├── arrow_down.svg
│ │ │ ├── console.svg
│ │ │ ├── import.svg
│ │ │ ├── export.svg
│ │ │ ├── straw.svg
│ │ │ ├── delete.svg
│ │ │ └── download.svg
│ │ ├── nav
│ │ │ ├── sidebar.svg
│ │ │ ├── backward.svg
│ │ │ ├── message.svg
│ │ │ ├── square.svg
│ │ │ ├── home.svg
│ │ │ ├── user.svg
│ │ │ ├── workspace.svg
│ │ │ └── ecosystem.svg
│ │ └── workspace
│ │ │ └── knowledge.svg
│ ├── ecosystem
│ │ ├── activated.png
│ │ ├── shared-offline.png
│ │ ├── shared-release.png
│ │ └── shared-reviewing.png
│ └── svg
│ │ ├── plus.svg
│ │ ├── plus_icon.svg
│ │ ├── icon_more.svg
│ │ ├── icon_star_fill.svg
│ │ └── icon_message.svg
├── types
│ ├── enums
│ │ ├── teamSetting.ts
│ │ ├── ecosystemMarket.ts
│ │ ├── event.ts
│ │ ├── login.ts
│ │ ├── theme.ts
│ │ ├── square.ts
│ │ ├── dataTable.ts
│ │ ├── systemManage.ts
│ │ ├── plugin.ts
│ │ └── menus.ts
│ ├── background.ts
│ ├── interfaces
│ │ ├── markdownRender.ts
│ │ └── message.ts
│ ├── global.d.ts
│ └── declare.d.ts
├── constants
│ ├── version.ts
│ ├── event.constants.tsx
│ ├── square.constants.ts
│ ├── home.constants.ts
│ └── codes.constants.ts
├── utils
│ ├── monaco-python.js
│ ├── form.tsx
│ ├── mcp.ts
│ ├── model.ts
│ └── debounce.ts
├── layouts
│ ├── MenusLayout
│ │ ├── SpaceSection
│ │ │ ├── SpaceTitle
│ │ │ │ ├── CreateNewTeam
│ │ │ │ │ └── index.less
│ │ │ │ └── index.less
│ │ │ ├── DevCollect
│ │ │ │ └── index.less
│ │ │ └── index.less
│ │ ├── User
│ │ │ ├── UserAction
│ │ │ │ ├── index.less
│ │ │ │ └── index.tsx
│ │ │ └── UserAvatar
│ │ │ │ ├── index.less
│ │ │ │ └── index.tsx
│ │ ├── SquareSection
│ │ │ └── index.less
│ │ ├── EcosystemMarketSection
│ │ │ └── index.less
│ │ ├── Header
│ │ │ └── index.less
│ │ └── UserRelAgent
│ │ │ └── index.less
│ ├── Setting
│ │ ├── SettingEmail
│ │ │ └── index.less
│ │ ├── ResetPassword
│ │ │ └── index.less
│ │ ├── ThemeSwitchPanel.less
│ │ └── SettingAccount
│ │ │ └── index.less
│ ├── InfiniteList
│ │ └── index.less
│ ├── MobileMenu.less
│ └── Message
│ │ └── index.less
├── access.ts
├── locales
│ ├── en-US.ts
│ └── zh-CN.ts
├── hooks
│ ├── useSendCode.ts
│ ├── useDisableSaveShortcut.ts
│ ├── useEcoMarket.ts
│ └── useTexts.ts
├── plugins
│ └── ds-markdown-mermaid-plugin
│ │ └── index.ts
└── styles
│ └── teamSetting.less
├── typings.d.ts
├── pnpm-workspace.yaml
├── public
├── Nd28jPGzj4.txt
└── bg
│ ├── bg-variant-1.png
│ ├── bg-variant-2.png
│ ├── bg-variant-3.png
│ ├── bg-variant-4.png
│ ├── bg-variant-5.png
│ ├── bg-variant-6.png
│ ├── bg-variant-7.png
│ └── bg-variant-8.png
├── .env
├── .npmrc
├── tsconfig.json
├── .stylelintignore
├── .eslintrc.js
├── .stylelintrc.js
├── .prettierignore
├── config
├── config.production.ts
└── config.development.ts
├── .husky
├── pre-commit
└── commit-msg
├── .prettierrc
├── .lintstagedrc
├── k8s
└── config
│ ├── frontend-service.yaml
│ ├── ingress.yaml
│ └── frontend-deployment.yaml
├── mock
└── userAPI.ts
├── .gitignore
└── .claude
└── settings.local.json
/src/models/IsModifed.ts:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/services/assistant.ts:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/components/base/Tabs/index.tsx:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/components/AssistantOptimizeModal/index.tsx:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/typings.d.ts:
--------------------------------------------------------------------------------
1 | import '@umijs/max/typings';
2 |
--------------------------------------------------------------------------------
/pnpm-workspace.yaml:
--------------------------------------------------------------------------------
1 | packages:
2 | - 'packages/*'
--------------------------------------------------------------------------------
/public/Nd28jPGzj4.txt:
--------------------------------------------------------------------------------
1 | fff44fb98890e28214f69c2e7e26a669
--------------------------------------------------------------------------------
/.env:
--------------------------------------------------------------------------------
1 | # file .env
2 | PORT=3000
3 | BABEL_CACHE=none
4 |
--------------------------------------------------------------------------------
/.npmrc:
--------------------------------------------------------------------------------
1 | registry=https://registry.npmmirror.com/
2 |
3 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./src/.umi/tsconfig.json"
3 | }
4 |
--------------------------------------------------------------------------------
/src/components/CustomFormModal/index.less:
--------------------------------------------------------------------------------
1 | .btn {
2 | width: 100px;
3 | }
4 |
--------------------------------------------------------------------------------
/src/components/LabelIcon/index.less:
--------------------------------------------------------------------------------
1 | .label-wrapper {
2 | width: 160px;
3 | }
4 |
--------------------------------------------------------------------------------
/.stylelintignore:
--------------------------------------------------------------------------------
1 | # 忽略第三方生成的 CSS 文件
2 | public/sdk/tailwind_design_mode.all.css
3 |
4 |
--------------------------------------------------------------------------------
/src/components/CreateAgent/index.less:
--------------------------------------------------------------------------------
1 | .segment {
2 | margin-bottom: 20px;
3 | }
4 |
--------------------------------------------------------------------------------
/src/pages/404/index.less:
--------------------------------------------------------------------------------
1 | .container {
2 | width: 100%;
3 | height: 100%;
4 | }
5 |
--------------------------------------------------------------------------------
/.eslintrc.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | extends: require.resolve('@umijs/max/eslint'),
3 | };
4 |
--------------------------------------------------------------------------------
/src/pages/SpaceMcpManage/McpComponentItem/index.less:
--------------------------------------------------------------------------------
1 | .time {
2 | line-height: 16px;
3 | }
4 |
--------------------------------------------------------------------------------
/src/pages/TeamSetting/index.less:
--------------------------------------------------------------------------------
1 | .container {
2 | width: 100%;
3 | height: 100%;
4 | }
5 |
--------------------------------------------------------------------------------
/.stylelintrc.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | extends: require.resolve('@umijs/max/stylelint'),
3 | };
4 |
--------------------------------------------------------------------------------
/public/bg/bg-variant-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nuwax-ai/nuwax/HEAD/public/bg/bg-variant-1.png
--------------------------------------------------------------------------------
/public/bg/bg-variant-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nuwax-ai/nuwax/HEAD/public/bg/bg-variant-2.png
--------------------------------------------------------------------------------
/public/bg/bg-variant-3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nuwax-ai/nuwax/HEAD/public/bg/bg-variant-3.png
--------------------------------------------------------------------------------
/public/bg/bg-variant-4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nuwax-ai/nuwax/HEAD/public/bg/bg-variant-4.png
--------------------------------------------------------------------------------
/public/bg/bg-variant-5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nuwax-ai/nuwax/HEAD/public/bg/bg-variant-5.png
--------------------------------------------------------------------------------
/public/bg/bg-variant-6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nuwax-ai/nuwax/HEAD/public/bg/bg-variant-6.png
--------------------------------------------------------------------------------
/public/bg/bg-variant-7.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nuwax-ai/nuwax/HEAD/public/bg/bg-variant-7.png
--------------------------------------------------------------------------------
/public/bg/bg-variant-8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nuwax-ai/nuwax/HEAD/public/bg/bg-variant-8.png
--------------------------------------------------------------------------------
/src/assets/images/copy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nuwax-ai/nuwax/HEAD/src/assets/images/copy.png
--------------------------------------------------------------------------------
/src/assets/images/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nuwax-ai/nuwax/HEAD/src/assets/images/logo.png
--------------------------------------------------------------------------------
/src/assets/images/menu.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nuwax-ai/nuwax/HEAD/src/assets/images/menu.png
--------------------------------------------------------------------------------
/src/assets/images/pic.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nuwax-ai/nuwax/HEAD/src/assets/images/pic.jpeg
--------------------------------------------------------------------------------
/src/components/custom/InfiniteScrollDiv/index.less:
--------------------------------------------------------------------------------
1 | .end-loading {
2 | line-height: 40px;
3 | }
4 |
--------------------------------------------------------------------------------
/src/pages/GlobalModelManage/index.less:
--------------------------------------------------------------------------------
1 | .container {
2 | width: 100%;
3 | height: 100%;
4 | }
5 |
--------------------------------------------------------------------------------
/src/pages/SpaceKnowledge/RawSegmentInfo/DocRename/index.less:
--------------------------------------------------------------------------------
1 | .input {
2 | width: 300px;
3 | }
4 |
--------------------------------------------------------------------------------
/src/assets/images/avatar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nuwax-ai/nuwax/HEAD/src/assets/images/avatar.png
--------------------------------------------------------------------------------
/src/assets/images/robot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nuwax-ai/nuwax/HEAD/src/assets/images/robot.png
--------------------------------------------------------------------------------
/src/assets/images/share.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nuwax-ai/nuwax/HEAD/src/assets/images/share.png
--------------------------------------------------------------------------------
/src/components/SliderNumber/index.less:
--------------------------------------------------------------------------------
1 | .slider-box {
2 | width: 220px;
3 | margin-right: 20px;
4 | }
5 |
--------------------------------------------------------------------------------
/src/assets/icons/files/doc.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nuwax-ai/nuwax/HEAD/src/assets/icons/files/doc.png
--------------------------------------------------------------------------------
/src/assets/icons/files/pdf.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nuwax-ai/nuwax/HEAD/src/assets/icons/files/pdf.png
--------------------------------------------------------------------------------
/src/assets/icons/files/ppt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nuwax-ai/nuwax/HEAD/src/assets/icons/files/ppt.png
--------------------------------------------------------------------------------
/src/assets/images/doc_image.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nuwax-ai/nuwax/HEAD/src/assets/images/doc_image.jpg
--------------------------------------------------------------------------------
/src/assets/images/mcp_image.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nuwax-ai/nuwax/HEAD/src/assets/images/mcp_image.png
--------------------------------------------------------------------------------
/src/assets/images/personal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nuwax-ai/nuwax/HEAD/src/assets/images/personal.png
--------------------------------------------------------------------------------
/src/pages/SpaceKnowledge/LocalCustomDocModal/TextFill/index.less:
--------------------------------------------------------------------------------
1 | .container {
2 | margin-top: 50px;
3 | }
4 |
--------------------------------------------------------------------------------
/src/assets/ecosystem/activated.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nuwax-ai/nuwax/HEAD/src/assets/ecosystem/activated.png
--------------------------------------------------------------------------------
/src/assets/icons/files/excel.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nuwax-ai/nuwax/HEAD/src/assets/icons/files/excel.png
--------------------------------------------------------------------------------
/src/assets/icons/files/media.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nuwax-ai/nuwax/HEAD/src/assets/icons/files/media.png
--------------------------------------------------------------------------------
/src/assets/images/agent_image.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nuwax-ai/nuwax/HEAD/src/assets/images/agent_image.png
--------------------------------------------------------------------------------
/src/assets/images/debug_image.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nuwax-ai/nuwax/HEAD/src/assets/images/debug_image.png
--------------------------------------------------------------------------------
/src/assets/images/fold_image.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nuwax-ai/nuwax/HEAD/src/assets/images/fold_image.png
--------------------------------------------------------------------------------
/src/assets/images/home_image.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nuwax-ai/nuwax/HEAD/src/assets/images/home_image.png
--------------------------------------------------------------------------------
/src/assets/images/iframe-copy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nuwax-ai/nuwax/HEAD/src/assets/images/iframe-copy.png
--------------------------------------------------------------------------------
/src/assets/images/model_image.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nuwax-ai/nuwax/HEAD/src/assets/images/model_image.png
--------------------------------------------------------------------------------
/src/assets/images/plugin_image.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nuwax-ai/nuwax/HEAD/src/assets/images/plugin_image.png
--------------------------------------------------------------------------------
/src/assets/images/square_image.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nuwax-ai/nuwax/HEAD/src/assets/images/square_image.png
--------------------------------------------------------------------------------
/src/assets/images/system_image.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nuwax-ai/nuwax/HEAD/src/assets/images/system_image.png
--------------------------------------------------------------------------------
/src/assets/images/team_image.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nuwax-ai/nuwax/HEAD/src/assets/images/team_image.png
--------------------------------------------------------------------------------
/src/assets/images/team_image1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nuwax-ai/nuwax/HEAD/src/assets/images/team_image1.png
--------------------------------------------------------------------------------
/src/components/AgentSidebar/TimedTask/CreateTimedTask/index.less:
--------------------------------------------------------------------------------
1 | .select {
2 | width: 120px !important;
3 | }
4 |
--------------------------------------------------------------------------------
/.prettierignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | .umi
3 | .umi-production
4 |
5 | k8s
6 | Dockerfile
7 | devspace_start.sh
8 |
9 | *.yaml
--------------------------------------------------------------------------------
/src/assets/images/database_image.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nuwax-ai/nuwax/HEAD/src/assets/images/database_image.png
--------------------------------------------------------------------------------
/src/assets/images/guid_question.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nuwax-ai/nuwax/HEAD/src/assets/images/guid_question.png
--------------------------------------------------------------------------------
/src/assets/images/teach_material.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nuwax-ai/nuwax/HEAD/src/assets/images/teach_material.png
--------------------------------------------------------------------------------
/src/assets/images/variable_image.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nuwax-ai/nuwax/HEAD/src/assets/images/variable_image.png
--------------------------------------------------------------------------------
/src/assets/images/workflow_image.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nuwax-ai/nuwax/HEAD/src/assets/images/workflow_image.png
--------------------------------------------------------------------------------
/src/assets/ecosystem/shared-offline.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nuwax-ai/nuwax/HEAD/src/assets/ecosystem/shared-offline.png
--------------------------------------------------------------------------------
/src/assets/ecosystem/shared-release.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nuwax-ai/nuwax/HEAD/src/assets/ecosystem/shared-release.png
--------------------------------------------------------------------------------
/src/assets/images/ecosystem_market.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nuwax-ai/nuwax/HEAD/src/assets/images/ecosystem_market.png
--------------------------------------------------------------------------------
/src/assets/images/home_image_active.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nuwax-ai/nuwax/HEAD/src/assets/images/home_image_active.png
--------------------------------------------------------------------------------
/src/assets/images/knowledge_image.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nuwax-ai/nuwax/HEAD/src/assets/images/knowledge_image.png
--------------------------------------------------------------------------------
/src/assets/images/send_image_gray.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nuwax-ai/nuwax/HEAD/src/assets/images/send_image_gray.png
--------------------------------------------------------------------------------
/src/assets/images/theme/nav-style1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nuwax-ai/nuwax/HEAD/src/assets/images/theme/nav-style1.png
--------------------------------------------------------------------------------
/src/assets/images/theme/nav-style2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nuwax-ai/nuwax/HEAD/src/assets/images/theme/nav-style2.png
--------------------------------------------------------------------------------
/src/assets/images/workspace_image.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nuwax-ai/nuwax/HEAD/src/assets/images/workspace_image.png
--------------------------------------------------------------------------------
/src/assets/ecosystem/shared-reviewing.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nuwax-ai/nuwax/HEAD/src/assets/ecosystem/shared-reviewing.png
--------------------------------------------------------------------------------
/src/assets/images/agent_conversation.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nuwax-ai/nuwax/HEAD/src/assets/images/agent_conversation.png
--------------------------------------------------------------------------------
/src/assets/images/square_banner_image.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nuwax-ai/nuwax/HEAD/src/assets/images/square_banner_image.png
--------------------------------------------------------------------------------
/src/assets/images/square_image_active.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nuwax-ai/nuwax/HEAD/src/assets/images/square_image_active.png
--------------------------------------------------------------------------------
/src/assets/images/system_image_active.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nuwax-ai/nuwax/HEAD/src/assets/images/system_image_active.png
--------------------------------------------------------------------------------
/src/assets/images/square_banner_image2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nuwax-ai/nuwax/HEAD/src/assets/images/square_banner_image2.png
--------------------------------------------------------------------------------
/src/assets/images/teach_material_active.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nuwax-ai/nuwax/HEAD/src/assets/images/teach_material_active.png
--------------------------------------------------------------------------------
/src/assets/images/theme/dark-navbar-bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nuwax-ai/nuwax/HEAD/src/assets/images/theme/dark-navbar-bg.png
--------------------------------------------------------------------------------
/src/assets/images/theme/light-navbar-bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nuwax-ai/nuwax/HEAD/src/assets/images/theme/light-navbar-bg.png
--------------------------------------------------------------------------------
/src/assets/images/workspace_image_active.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nuwax-ai/nuwax/HEAD/src/assets/images/workspace_image_active.png
--------------------------------------------------------------------------------
/src/components/CreatedItem/index.less:
--------------------------------------------------------------------------------
1 | .upload-box {
2 | margin: 16px 0;
3 | }
4 |
5 | .create-team-form {
6 | width: 100%;
7 | }
8 |
--------------------------------------------------------------------------------
/src/pages/SpaceLibrary/ComponentItem/index.less:
--------------------------------------------------------------------------------
1 | .time {
2 | line-height: 16px;
3 | }
4 |
5 | .status {
6 | height: 16px;
7 | }
8 |
--------------------------------------------------------------------------------
/src/types/enums/teamSetting.ts:
--------------------------------------------------------------------------------
1 | export enum TeamStatusEnum {
2 | Owner = 'Owner',
3 | Admin = 'Admin',
4 | User = 'User',
5 | }
6 |
--------------------------------------------------------------------------------
/src/assets/images/ecosystem_market_active.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nuwax-ai/nuwax/HEAD/src/assets/images/ecosystem_market_active.png
--------------------------------------------------------------------------------
/src/components/business-component/CopyToSpaceComponent/index.less:
--------------------------------------------------------------------------------
1 | // CopyToSpaceComponent 样式文件
2 | // 该组件使用 MoveCopyComponent 的样式,此处预留扩展样式
3 |
--------------------------------------------------------------------------------
/src/pages/AppDev/components/ChatArea/components/AppDevMarkdownCMDWrapper/index.less:
--------------------------------------------------------------------------------
1 | .chatAreaMarkdown {
2 | // 继承父组件的样式
3 | width: 100%;
4 | }
5 |
--------------------------------------------------------------------------------
/src/types/enums/ecosystemMarket.ts:
--------------------------------------------------------------------------------
1 | export enum EcosystemMarketEnum {
2 | Plugin = 'Plugin',
3 | Template = 'Template',
4 | MCP = 'MCP',
5 | }
6 |
--------------------------------------------------------------------------------
/src/components/LabelStar/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/color';
2 |
3 | .container {
4 | gap: 4px;
5 |
6 | .star {
7 | color: @RED;
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/src/pages/SpaceDevelop/ApplicationItem/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/token.less';
2 |
3 | .footer {
4 | height: 24px;
5 | color: #828894;
6 | font-size: 16px;
7 | }
8 |
--------------------------------------------------------------------------------
/src/components/custom/TooltipIcon/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/color';
2 |
3 | .box {
4 | width: 26px;
5 | height: 26px;
6 | font-size: 14px;
7 | color: @GRAY32;
8 | }
9 |
--------------------------------------------------------------------------------
/src/pages/AppDev/components/DataResourceList/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/color.less';
2 | @import '@/styles/token.less';
3 |
4 | .dataResourceItem {
5 | cursor: pointer;
6 | }
7 |
--------------------------------------------------------------------------------
/config/config.production.ts:
--------------------------------------------------------------------------------
1 | import { defineConfig } from 'umi';
2 |
3 | export default defineConfig({
4 | define: {
5 | 'process.env.BASE_URL': '',
6 | },
7 | hash: true,
8 | });
9 |
--------------------------------------------------------------------------------
/src/constants/version.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * 应用版本信息
3 | * 此文件由 scripts/generate-version.js 自动生成,请勿手动修改
4 | */
5 | export const APP_VERSION = '1.0.5';
6 | export const APP_NAME = 'nuwax-frontend';
7 |
--------------------------------------------------------------------------------
/src/pages/SpaceKnowledge/QaBatchModal/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/color';
2 |
3 | .dragger {
4 | margin-top: 16px;
5 | border: 1px dashed @WHITE11;
6 | border-radius: 6px;
7 | }
8 |
--------------------------------------------------------------------------------
/src/components/McpCollapseComponentList/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/token';
2 |
3 | .text {
4 | color: @colorTextTertiary;
5 | font-size: @fontSizeSm;
6 | line-height: @lineHeight;
7 | }
8 |
--------------------------------------------------------------------------------
/src/pages/EditAgent/AgentArrangeConfig/KnowledgeTextList/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/color';
2 |
3 | .knowledge-extra {
4 | padding: 0 6px;
5 | font-size: 12px;
6 | color: @GRAY05;
7 | }
8 |
--------------------------------------------------------------------------------
/src/types/enums/event.ts:
--------------------------------------------------------------------------------
1 | export enum EventTypeEnum {
2 | // 有新的通知消息
3 | NewNotifyMessage = 'new_notify_message',
4 | // 会话消息列表需要刷新
5 | RefreshChatMessage = 'refresh_chat_message',
6 | }
7 |
--------------------------------------------------------------------------------
/src/components/base/EcoShareStatus/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/token.less';
2 |
3 | .container {
4 | color: @colorText;
5 | font-size: @fontSize;
6 | font-weight: @fontWeightStrong;
7 | }
8 |
--------------------------------------------------------------------------------
/src/pages/EditAgent/AgentArrangeConfig/LongMemoryContent/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/color';
2 |
3 | .container {
4 | //color: @BLANK13;
5 | //font-size: 14px;
6 | //line-height: 16px;
7 | }
8 |
--------------------------------------------------------------------------------
/src/components/custom/Loading/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/color';
2 | @import '@/styles/token';
3 |
4 | .container {
5 | gap: @marginXs;
6 | color: @colorPrimary;
7 | font-size: @fontSizeSm;
8 | }
9 |
--------------------------------------------------------------------------------
/src/components/CreateWorkflow/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/color';
2 |
3 | .container {
4 | border-radius: 10px;
5 | background: @WHITE12;
6 | }
7 |
8 | .header {
9 | background: @WHITE12;
10 | }
11 |
--------------------------------------------------------------------------------
/config/config.development.ts:
--------------------------------------------------------------------------------
1 | import { defineConfig } from 'umi';
2 |
3 | export default defineConfig({
4 | define: {
5 | 'process.env.BASE_URL': 'https://testagent.xspaceagi.com',
6 | },
7 | hash: true,
8 | });
9 |
--------------------------------------------------------------------------------
/src/utils/monaco-python.js:
--------------------------------------------------------------------------------
1 | // 注册Python语言支持
2 | monaco.languages.register({ id: 'python' });
3 | monaco.languages.setMonarchTokensProvider('python', {
4 | keywords: [],
5 | tokenizer: {
6 | root: [],
7 | },
8 | });
9 |
--------------------------------------------------------------------------------
/src/pages/SpaceKnowledge/LocalCustomDocModal/UploadFile/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/color';
2 |
3 | .container {
4 | height: 386px;
5 | margin-top: 16px;
6 | border: 1px dashed @WHITE11;
7 | border-radius: 6px;
8 | }
9 |
--------------------------------------------------------------------------------
/src/components/FormListItem/Reference.tsx:
--------------------------------------------------------------------------------
1 | import { Select } from 'antd';
2 |
3 | const Reference = () => {
4 | return (
5 |
6 |
7 |
8 | );
9 | };
10 |
11 | export default Reference;
12 |
--------------------------------------------------------------------------------
/src/components/AgentChatEmpty/index.less:
--------------------------------------------------------------------------------
1 | .avatar {
2 | width: 60px;
3 | height: 60px;
4 | margin-bottom: 14px;
5 | border-radius: 10px;
6 | }
7 |
8 | .nickname {
9 | line-height: 30px;
10 | padding: 0 30px;
11 | text-align: center;
12 | }
13 |
--------------------------------------------------------------------------------
/src/components/PluginConfigTitle/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/color';
2 | @import '@/styles/token';
3 |
4 | .title {
5 | font-size: 18px;
6 | font-weight: @fontWeightStrong;
7 | color: @BLANK04;
8 | }
9 |
10 | .extra {
11 | gap: 20px;
12 | }
13 |
--------------------------------------------------------------------------------
/src/layouts/MenusLayout/SpaceSection/SpaceTitle/CreateNewTeam/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/color';
2 |
3 | .create-team-tips {
4 | color: @BLANK07;
5 | font-size: 14px;
6 | line-height: 22px;
7 | }
8 |
9 | .upload-box {
10 | margin: 16px 0;
11 | }
12 |
--------------------------------------------------------------------------------
/src/pages/AppDev/components/ToggleDesignBtn/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/token.less';
2 |
3 | // 聊天模式容器
4 | .chatModeContainer {
5 | display: flex;
6 | align-items: center;
7 | padding: 8px 20px;
8 | border-bottom: 1px solid rgba(0, 0, 0, 10%);
9 | }
10 |
--------------------------------------------------------------------------------
/src/layouts/MenusLayout/User/UserAction/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/token';
2 |
3 | .row {
4 | height: 36px;
5 | padding: @paddingSm;
6 | gap: @paddingSm;
7 | color: @colorTextSecondary;
8 |
9 | span {
10 | font-size: @fontSize;
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/src/pages/EditAgent/AgentArrangeConfig/KnowledgeTextList/KnowledgeSetting/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/token';
2 |
3 | .container {
4 | padding-top: 30px;
5 |
6 | .title {
7 | font-weight: @fontWeightStrong;
8 | margin-bottom: 20px;
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/src/access.ts:
--------------------------------------------------------------------------------
1 | export default (initialState: API.UserInfo) => {
2 | // 在这里按照初始化数据定义项目中的权限,统一管理
3 | // 参考文档 https://umijs.org/docs/max/access
4 | const canSeeAdmin = initialState && initialState.name !== 'dontHaveAccess';
5 | return {
6 | canSeeAdmin,
7 | };
8 | };
9 |
--------------------------------------------------------------------------------
/src/models/global.ts:
--------------------------------------------------------------------------------
1 | // 全局共享数据示例
2 | import { useState } from 'react';
3 |
4 | const useUser = () => {
5 | const [name, setName] = useState('DEFAULT_NAME');
6 | return {
7 | name,
8 | setName,
9 | };
10 | };
11 |
12 | export default useUser;
13 |
--------------------------------------------------------------------------------
/src/components/base/McpStatus/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/token.less';
2 |
3 | .container {
4 | height: 16px;
5 | gap: 4px;
6 | color: #828894;
7 | font-size: @fontSizeSm;
8 | font-weight: normal;
9 |
10 | .title {
11 | line-height: 16px;
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/src/pages/SpaceTable/TableOperationBar/index.less:
--------------------------------------------------------------------------------
1 | .tab-container {
2 | margin-left: 14px;
3 | user-select: none; // 禁止选中tab;
4 |
5 | :global {
6 | .ant-tabs-tab.ant-tabs-tab-focus .ant-tabs-tab-btn {
7 | outline: none !important;
8 | }
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/src/constants/event.constants.tsx:
--------------------------------------------------------------------------------
1 | import { EventTypeEnum } from '@/types/enums/event';
2 |
3 | export const EVENT_TYPE: Record = {
4 | NewNotifyMessage: EventTypeEnum.NewNotifyMessage, // 新消息
5 | RefreshChatMessage: EventTypeEnum.RefreshChatMessage, // 刷新会话
6 | };
7 |
--------------------------------------------------------------------------------
/src/components/OverrideTextArea/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/color';
2 |
3 | .text-area {
4 | margin-bottom: 0;
5 |
6 | .input {
7 | padding-bottom: 20px;
8 | }
9 | }
10 |
11 | .text {
12 | right: 12px;
13 | bottom: 0;
14 | margin-bottom: 0;
15 | color: @BLANK10;
16 | }
17 |
--------------------------------------------------------------------------------
/src/assets/icons/chat/stop.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/.husky/pre-commit:
--------------------------------------------------------------------------------
1 | # 优先使用 pnpm;若未安装则回退到 npx/yarn/bun
2 | if command -v pnpm >/dev/null 2>&1; then
3 | pnpm run lint-staged
4 | elif command -v bun >/dev/null 2>&1; then
5 | bun x lint-staged
6 | elif command -v yarn >/dev/null 2>&1; then
7 | yarn lint-staged
8 | else
9 | npx --yes lint-staged
10 | fi
11 |
--------------------------------------------------------------------------------
/src/components/business-component/index.ts:
--------------------------------------------------------------------------------
1 | export { default as AppDevEmptyState } from './AppDevEmptyState';
2 | export { default as CardWrapper } from './CardWrapper';
3 | export { default as CopyToSpaceComponent } from './CopyToSpaceComponent';
4 | export { default as PagePreviewIframe } from './PagePreviewIframe';
5 |
--------------------------------------------------------------------------------
/src/pages/SystemConfig/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/token';
2 |
3 | .container {
4 | width: 100%;
5 | height: 100%;
6 | padding: 16px 24px;
7 | // background-color: #f3f5fa;
8 | }
9 |
10 | .title {
11 | font-weight: @fontWeightStrong;
12 | font-size: 18px;
13 | margin-bottom: 13px;
14 | }
15 |
--------------------------------------------------------------------------------
/src/components/ParamsNameLabel/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/color';
2 |
3 | .container {
4 | gap: 6px;
5 |
6 | .star {
7 | color: @RED;
8 | }
9 |
10 | .param-type {
11 | color: @BLUE06;
12 | padding: 0 4px;
13 | border-radius: 4px;
14 | background-color: @BLANK20;
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/pages/EditAgent/AgentArrangeConfig/ConfigOptionsHeader/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/color';
2 | @import '@/styles/token';
3 |
4 | .container {
5 | padding: @paddingXs;
6 |
7 | .title {
8 | font-size: @fontSize;
9 | line-height: @lineHeight;
10 | color: @colorTextSecondary;
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/src/components/SubmitButton/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/color';
2 |
3 | .btn {
4 | width: 100px;
5 | }
6 |
7 | .confirm-btn[disabled] {
8 | background-color: @GRAY03; /* 修改背景颜色 */
9 | color: @WHITE; /* 修改文本颜色 */
10 | border-color: transparent; /* 修改边框颜色 */
11 | cursor: not-allowed; /* 修改鼠标指针样式 */
12 | }
13 |
--------------------------------------------------------------------------------
/src/layouts/MenusLayout/SpaceSection/DevCollect/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/color';
2 | @import '@/styles/token';
3 |
4 | .no-dev-collect {
5 | padding: 0 @paddingXs;
6 | font-size: @fontSizeSm;
7 | line-height: @fontHeight;
8 | color: @navSecondMenuTextSecondary;
9 | opacity: 0.5; // TODO 这个需要给UI确认
10 | }
11 |
--------------------------------------------------------------------------------
/src/pages/SpaceTable/AddAndModify/index.less:
--------------------------------------------------------------------------------
1 | .add-modify-form {
2 | max-height: 60vh;
3 | overflow: auto;
4 |
5 | .ant-picker {
6 | width: 100%;
7 | }
8 |
9 | .ant-input-number {
10 | width: 100%;
11 | }
12 | }
13 |
14 | .add-modal-style {
15 | max-height: 75%;
16 | overflow: hidden;
17 | }
18 |
--------------------------------------------------------------------------------
/src/assets/icons/design/border_width.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/components/SiteFooter/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/color';
2 |
3 | .footer {
4 | padding: 10px 0 20px;
5 | width: 100%;
6 | text-align: center;
7 | font-size: 12px;
8 | font-weight: normal;
9 | color: @GRAY07;
10 | //background-color: @WHITE06;
11 |
12 | a {
13 | color: @GRAY07;
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/src/pages/404/index.tsx:
--------------------------------------------------------------------------------
1 | import classNames from 'classnames';
2 | import React from 'react';
3 | import styles from './index.less';
4 |
5 | const cx = classNames.bind(styles);
6 |
7 | const Index: React.FC = () => {
8 | return 404页面
;
9 | };
10 |
11 | export default Index;
12 |
--------------------------------------------------------------------------------
/src/pages/EditAgent/AgentArrangeConfig/EventList/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/color';
2 |
3 | .container {
4 | flex-wrap: wrap;
5 | gap: 6px;
6 |
7 | .box {
8 | display: inline-block;
9 | padding: 2px 10px;
10 | color: @GRAY12;
11 | font-size: 12px;
12 | background-color: @GRAY01;
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/src/pages/EditAgent/AgentArrangeConfig/VariableList/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/color';
2 |
3 | .container {
4 | flex-wrap: wrap;
5 | gap: 6px;
6 |
7 | .box {
8 | display: inline-block;
9 | padding: 2px 10px;
10 | color: @GRAY12;
11 | font-size: 12px;
12 | background-color: @GRAY01;
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/src/pages/SpaceTable/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/color';
2 |
3 | .database-container {
4 | padding: 0 20px;
5 | height: 100%;
6 | display: flex;
7 | flex-direction: column;
8 |
9 | .inner-container {
10 | flex: 1;
11 | margin-top: 8px;
12 | display: flex;
13 | flex-direction: column;
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/src/pages/Chat/DropdownChangeName/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/color';
2 | @import '@/styles/token';
3 |
4 | .dropdown-container {
5 | padding: @paddingXxs @paddingXs;
6 | border-radius: @borderRadius;
7 | cursor: pointer;
8 | color: @colorTextSecondary;
9 |
10 | &:hover {
11 | background-color: #f3f3f3;
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/src/pages/EditAgent/AgentArrangeConfig/ComponentSettingModal/CardBind/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/color';
2 | @import '@/styles/token';
3 |
4 | .container {
5 | background-color: @WHITE04;
6 | }
7 |
8 | .title {
9 | margin-bottom: 12px;
10 | font-size: 18px;
11 | font-weight: @fontWeightStrong;
12 | color: @BLANK17;
13 | }
14 |
--------------------------------------------------------------------------------
/src/pages/SpaceKnowledge/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/color';
2 |
3 | .container {
4 | overflow: hidden;
5 |
6 | .inner-container {
7 | border: 1px solid @GRAY01;
8 | }
9 |
10 | .inputSearch {
11 | display: flex;
12 | justify-content: flex-end;
13 | align-items: center;
14 | height: 50px;
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/.husky/commit-msg:
--------------------------------------------------------------------------------
1 | # 优先使用 pnpm;若未安装则回退到 npx/yarn/bun
2 | if command -v pnpm >/dev/null 2>&1; then
3 | pnpm run verify-commit "$1"
4 | elif command -v bun >/dev/null 2>&1; then
5 | bun x max verify-commit "$1"
6 | elif command -v yarn >/dev/null 2>&1; then
7 | yarn verify-commit "$1"
8 | else
9 | npx --yes max verify-commit "$1"
10 | fi
11 |
--------------------------------------------------------------------------------
/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 | "printWidth": 80,
3 | "singleQuote": true,
4 | "trailingComma": "all",
5 | "proseWrap": "never",
6 | "overrides": [{ "files": ".prettierrc", "options": { "parser": "json" } }],
7 | "plugins": [
8 | "prettier-plugin-organize-imports",
9 | "prettier-plugin-packagejson"
10 | ],
11 | "endOfLine": "auto"
12 | }
13 |
--------------------------------------------------------------------------------
/src/components/AgentSidebar/StatisticsInfo/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/color';
2 | @import '@/styles/token';
3 |
4 | .header {
5 | color: @colorText;
6 | justify-content: flex-end;
7 | //padding: @paddingXxs @paddingSm;
8 |
9 | // .close {
10 | // height: 20px;
11 | // width: 20px;
12 | // border: none;
13 | // }
14 | }
15 |
--------------------------------------------------------------------------------
/src/components/EcosystemCard/SharedIcon/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/token';
2 |
3 | .container {
4 | display: flex;
5 | align-items: center;
6 | gap: 4px;
7 | color: rgba(21, 23, 31, 50%);
8 | font-size: 12px;
9 | font-weight: @fontWeightStrong;
10 | flex: 0 1 auto;
11 |
12 | .text {
13 | white-space: nowrap;
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/src/types/background.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * 背景图片类型定义
3 | * 避免循环依赖,独立定义类型
4 | */
5 | export interface BackgroundImage {
6 | /** 背景图片唯一标识 */
7 | id: string;
8 | /** 背景图片显示名称 */
9 | name: string;
10 | /** 背景图片文件路径 */
11 | path: string;
12 | /** 背景图片预览路径 */
13 | preview: string;
14 | /** 背景图片描述(可选) */
15 | description?: string;
16 | }
17 |
--------------------------------------------------------------------------------
/src/layouts/MenusLayout/SquareSection/index.less:
--------------------------------------------------------------------------------
1 | .box-hidden {
2 | height: 0;
3 | overflow: hidden;
4 | transition: all 0.3s;
5 | transition-duration: 0.15s;
6 | transition-property: all;
7 | transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
8 |
9 | &.visible {
10 | height: auto;
11 | padding-bottom: 16px;
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/src/models/monaco.ts:
--------------------------------------------------------------------------------
1 | // 代码编辑器的使用
2 | import { useState } from 'react';
3 |
4 | const useUser = () => {
5 | const [code, setCode] = useState('');
6 | const [isShow, setIsShow] = useState(false);
7 | return {
8 | code,
9 | setCode,
10 | isShow,
11 | setIsShow,
12 | };
13 | };
14 |
15 | export default useUser;
16 |
--------------------------------------------------------------------------------
/src/pages/EditAgent/AgentArrangeConfig/PageSettingModal/HomeIndex/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/color';
2 | @import '@/styles/token';
3 |
4 | .container {
5 | height: 100%;
6 | padding: 50px 24px 24px;
7 | padding-left: 20px;
8 | background-color: @WHITE;
9 | overflow: hidden;
10 |
11 | .footer {
12 | text-align: right;
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/src/assets/icons/chat/send.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/pages/EditAgent/AgentArrangeConfig/PageSettingModal/VisibleToLLM/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/color';
2 | @import '@/styles/token';
3 |
4 | .container {
5 | height: 100%;
6 | padding: 50px 24px 24px;
7 | padding-left: 20px;
8 | background-color: @WHITE;
9 | overflow: hidden;
10 |
11 | .footer {
12 | text-align: right;
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/src/pages/SpaceDevelop/ApplicationItem/CollectStar/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/color';
2 |
3 | .icon-box {
4 | width: 20px;
5 | height: 20px;
6 | margin-inline-start: 6px;
7 | border-radius: 6px;
8 | background-color: @BLANK18;
9 | color: @BLANK05;
10 | cursor: pointer;
11 |
12 | &.collected {
13 | color: @YELLOW01;
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/src/components/base/SvgIcon/styles.less:
--------------------------------------------------------------------------------
1 | // .xagi-svg-icon {
2 | // /* 让 color 透传至 path 的 stroke/fill,要求源 SVG 使用 currentColor */
3 | // color: inherit;
4 | // // vertical-align: -0.125em;
5 | // }
6 |
7 | /* 使用文件导入的 SVG 往往包含 stroke/fill 的展示属性,这里统一覆盖为 currentColor */
8 | .xagi-svg-icon path {
9 | // stroke: currentColor;
10 | fill: currentcolor;
11 | }
12 |
--------------------------------------------------------------------------------
/src/components/custom/SelectList/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/color';
2 |
3 | .container {
4 | width: 120px;
5 |
6 | .option-icon-box {
7 | width: 20px;
8 | height: 20px;
9 |
10 | .icon {
11 | color: @BLUE03;
12 | }
13 | }
14 |
15 | .image {
16 | width: 18px;
17 | height: 18px;
18 | object-fit: cover;
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/src/layouts/MenusLayout/EcosystemMarketSection/index.less:
--------------------------------------------------------------------------------
1 | .box-hidden {
2 | height: 0;
3 | overflow: hidden;
4 | transition: all 0.3s;
5 | transition-duration: 0.15s;
6 | transition-property: all;
7 | transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
8 |
9 | &.visible {
10 | height: auto;
11 | padding-bottom: 16px;
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/src/assets/icons/design/radius.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/components/ChatView/ChatSampleBottom/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/color';
2 | @import '@/styles/token';
3 |
4 | .container {
5 | color: @colorTextDescription;
6 | font-size: @fontSizeSm;
7 | padding: 0 @paddingXs;
8 |
9 | .more-action {
10 | gap: 10px;
11 |
12 | img {
13 | width: 16px;
14 | height: 16px;
15 | }
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/src/components/CreateKnowledge/SkillListEmpty/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/color';
2 | @import '@/styles/token';
3 |
4 | .workflow-desc {
5 | width: 100%;
6 | height: 56px;
7 | color: #999;
8 | background-color: #f5f5f5;
9 | border-radius: 5px;
10 | display: flex;
11 | align-items: center;
12 | justify-content: center;
13 | cursor: pointer;
14 | }
15 |
--------------------------------------------------------------------------------
/src/pages/Square/SquareComponentInfo/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/color';
2 |
3 | .time {
4 | line-height: 16px;
5 | }
6 |
7 | .footer {
8 | height: 24px;
9 | gap: 16px;
10 |
11 | .text {
12 | display: flex;
13 | align-items: center;
14 | margin-right: auto;
15 | font-size: 12px;
16 | color: #828894;
17 | gap: 4px;
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/src/components/ExpandTextArea/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/color';
2 | @import '@/styles/token';
3 |
4 | .container {
5 | .prompt-editor-provider {
6 | border: 0.5px solid @colorBorderSecondary;
7 | border-radius: @borderRadius;
8 | height: 100px;
9 |
10 | &:hover,
11 | &:focus {
12 | border-color: @colorPrimary;
13 | }
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/src/layouts/MenusLayout/SpaceSection/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/color';
2 | @import '@/styles/token';
3 |
4 | .container {
5 | .collection-title {
6 | margin-top: @margin;
7 | padding: @paddingXs;
8 | line-height: @fontHeightSm;
9 | font-size: @fontSize;
10 | font-weight: @fontWeightStrong;
11 | color: @navSecondMenuTextSecondary;
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/src/pages/AppDev/components/index.ts:
--------------------------------------------------------------------------------
1 | // 导出 AppDev 相关组件
2 | export { default as AppDevHeader } from './AppDevHeader';
3 | export { default as CodeViewer } from './CodeViewer';
4 | export { default as ContentViewer } from './ContentViewer';
5 | export { default as FilePathHeader } from './FilePathHeader';
6 | export { default as ImageViewer } from './ImageViewer';
7 | // WebIDE 组件直接通过各自的目录导出
8 |
--------------------------------------------------------------------------------
/src/components/NoMoreDivider/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/token';
2 |
3 | .no-more-divider {
4 | width: 172px;
5 | margin: 0 auto;
6 | font-size: 12px;
7 | font-style: normal;
8 | font-weight: @fontWeightStrong;
9 | line-height: 16px; /* 133.333% */
10 |
11 | .divider {
12 | color: @colorTextQuaternary;
13 | border-color: @colorTextQuaternary;
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/src/locales/en-US.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Global English messages
3 | * For React Intl / Umi locale plugin
4 | */
5 | export default {
6 | // Theme
7 | 'theme.light': 'Light',
8 | 'theme.dark': 'Dark',
9 | 'theme.background': 'Background',
10 | 'theme.background.select': 'Select Background',
11 |
12 | // Language
13 | 'lang.en': 'English',
14 | 'lang.zh': 'Chinese',
15 | };
16 |
--------------------------------------------------------------------------------
/src/pages/SpaceKnowledge/DocWrap/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/color';
2 |
3 | .container {
4 | width: 320px;
5 | padding: 0 10px 16px;
6 | border-right: 1px solid @GRAY01;
7 |
8 | .search-icon {
9 | color: @GRAY05;
10 | }
11 |
12 | .document-title {
13 | line-height: 40px;
14 | padding: 0 10px;
15 | color: @GRAY05;
16 | font-size: 14px;
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/.lintstagedrc:
--------------------------------------------------------------------------------
1 | {
2 | "*.{md,json}": ["prettier --cache --write"],
3 | "*.{js,jsx}": ["max lint --fix --eslint-only", "prettier --cache --write"],
4 | "*.{css,less}": [
5 | "max lint --fix --stylelint-only",
6 | "prettier --cache --write"
7 | ],
8 | "*.ts?(x)": [
9 | "max lint --fix --eslint-only",
10 | "prettier --cache --parser=typescript --write"
11 | ]
12 | }
13 |
--------------------------------------------------------------------------------
/src/locales/zh-CN.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * 全局中文(简体)文案
3 | * 用于 React Intl / Umi 插件的多语言配置
4 | *
5 | * 包含:
6 | * - 主题切换文案
7 | * - 语言切换文案
8 | * - 背景选择文案
9 | */
10 | export default {
11 | // 主题相关
12 | 'theme.light': '浅色',
13 | 'theme.dark': '深色',
14 | 'theme.background': '背景',
15 | 'theme.background.select': '选择背景',
16 |
17 | // 语言切换相关
18 | 'lang.en': '英文',
19 | 'lang.zh': '中文',
20 | };
21 |
--------------------------------------------------------------------------------
/src/assets/icons/chat/add.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/pages/EditAgent/AgentModelSetting/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/token';
2 |
3 | .modal-wrapper {
4 | width: 586px;
5 | }
6 |
7 | .select {
8 | width: 259px !important;
9 | margin-bottom: 16px;
10 | }
11 |
12 | .title {
13 | font-size: 14px;
14 | font-weight: @fontWeightStrong;
15 | margin-bottom: 16px;
16 | }
17 |
18 | .generate-name {
19 | font-weight: @fontWeightStrong;
20 | }
21 |
--------------------------------------------------------------------------------
/src/assets/icons/common/plus.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/components/AgentSidebar/AgentConversation/HistoryConversation/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/color';
2 |
3 | .container {
4 | height: 500px;
5 | }
6 |
7 | .row {
8 | height: 28px;
9 | margin-bottom: 10px;
10 | padding: 0 20px 0 10px;
11 | gap: 20px;
12 | color: @BLANK04;
13 | font-size: 12px;
14 | background-color: @WHITE03;
15 |
16 | span {
17 | color: @GRAY07;
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/src/components/base/AgentType/images/icon_table.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/types/enums/login.ts:
--------------------------------------------------------------------------------
1 | export enum LoginTypeEnum {
2 | // 密码登录
3 | Password,
4 | // 手机验证码登录、注册
5 | Code,
6 | }
7 |
8 | export enum LoginMethodEnum {
9 | // 手机号码登录
10 | Phone,
11 | // 邮箱登录
12 | Email,
13 | }
14 |
15 | // 发送验证码枚举
16 | export enum SendCodeEnum {
17 | LOGIN_OR_REGISTER = 'LOGIN_OR_REGISTER',
18 | RESET_PASSWORD = 'RESET_PASSWORD',
19 | BIND_EMAIL = 'BIND_EMAIL',
20 | }
21 |
--------------------------------------------------------------------------------
/k8s/config/frontend-service.yaml:
--------------------------------------------------------------------------------
1 | # frontend-service.yaml
2 | apiVersion: v1
3 | kind: Service
4 | metadata:
5 | name: agent-frontend-service
6 | spec:
7 | type: ClusterIP
8 | selector:
9 | app: agent-frontend
10 | ports:
11 | - name: http
12 | protocol: TCP
13 | port: 80
14 | targetPort: 80
15 | - name: https
16 | protocol: TCP
17 | port: 443
18 | targetPort: 443
--------------------------------------------------------------------------------
/src/components/custom/CustomInputNumber/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/color';
2 |
3 | .space-box {
4 | gap: 8px;
5 |
6 | .input-number-arrow {
7 | width: 12px;
8 | height: 30px;
9 | background: @WHITE;
10 | border-radius: 6px;
11 | font-size: 12px;
12 | color: @GRAY05;
13 |
14 | .input-disabled {
15 | color: @GRAY04;
16 | cursor: not-allowed;
17 | }
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/src/components/editableTitle/index.less:
--------------------------------------------------------------------------------
1 | .clickableElement {
2 | cursor: pointer;
3 | line-height: 24px;
4 | height: 24px;
5 | display: inline-block;
6 | overflow: hidden;
7 | text-overflow: ellipsis;
8 | white-space: nowrap;
9 | vertical-align: middle;
10 | width: 100%;
11 | }
12 |
13 | .editableTitleInput {
14 | font-size: 12px;
15 | height: 24px;
16 |
17 | // background-color: red;
18 | }
19 |
--------------------------------------------------------------------------------
/src/components/PluginCardList/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/color';
2 | @import '@/styles/token';
3 |
4 | .listTitle {
5 | margin-bottom: 16px !important;
6 | font-weight: @fontWeightStrong !important;
7 | color: @GRAY03;
8 | }
9 |
10 | .cardCol {
11 | margin-bottom: 16px;
12 | }
13 |
14 | .emptyContainer {
15 | margin: 32px 0;
16 | padding: 24px;
17 | background-color: @GRAY09;
18 | border-radius: 8px;
19 | }
20 |
--------------------------------------------------------------------------------
/src/pages/SystemConfig/BaseTab/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/color.less';
2 | @import '@/styles/token.less';
3 |
4 | .container {
5 | position: relative;
6 | padding: 26px 26px 0 22px;
7 |
8 | .footer {
9 | position: sticky;
10 | bottom: 0;
11 | left: 0;
12 | width: 100%;
13 | line-height: 80px;
14 | background-color: @colorBgContainer;
15 | border-top: 1px solid @colorBorder;
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/src/assets/icons/nav/sidebar.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/pages/SpaceLibrary/CreateModel/IntranetModel/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/color';
2 |
3 | .internal-network {
4 | padding: 12px 10px;
5 | border-radius: 5px;
6 | background: @WHITE15;
7 |
8 | p {
9 | margin-bottom: 8px;
10 | font-size: 12px;
11 | line-height: 22px;
12 | color: @BLANK04;
13 | }
14 |
15 | .state {
16 | margin-left: 20px;
17 | font-size: 14px;
18 | color: @BLANK17;
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/src/types/interfaces/markdownRender.ts:
--------------------------------------------------------------------------------
1 | import type { MarkdownCMDRef } from 'ds-markdown';
2 |
3 | export type { MarkdownCMDRef };
4 |
5 | // 组件 Props 类型
6 | export interface MarkdownRendererProps {
7 | id: string;
8 | className?: string;
9 | disableTyping?: boolean;
10 | theme?: 'light' | 'dark';
11 | answerType?: 'answer' | 'thinking';
12 | markdownRef: React.RefObject;
13 | headerActions?: boolean;
14 | }
15 |
--------------------------------------------------------------------------------
/src/components/base/HoverScrollbar/index.less:
--------------------------------------------------------------------------------
1 | .container {
2 | position: relative;
3 | width: 100%;
4 | height: 100%;
5 | }
6 |
7 | /* 外层滚动容器:启用原生稳定滚动条槽位,避免内容宽度变化 */
8 | .content {
9 | position: relative;
10 | width: 100%;
11 | height: 100%;
12 | overflow-x: hidden;
13 | overflow-y: hidden;
14 |
15 | &:hover {
16 | overflow: auto;
17 | }
18 | }
19 |
20 | /* 内部内容:绝对定位 */
21 | .body {
22 | position: absolute;
23 | }
24 |
--------------------------------------------------------------------------------
/src/layouts/MenusLayout/User/UserAvatar/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/color';
2 | @import '@/styles/token';
3 |
4 | .user {
5 | width: 32px;
6 | height: 32px;
7 | margin-top: 5px;
8 | margin-bottom: 5px;
9 | border-radius: 50%;
10 | overflow: hidden;
11 | box-sizing: content-box;
12 | border: @lineWidth solid @colorBorder;
13 |
14 | img {
15 | width: 100%;
16 | height: 100%;
17 | object-fit: cover;
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/src/layouts/Setting/SettingEmail/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/color';
2 | @import '@/styles/token';
3 |
4 | .container {
5 | padding: 24px;
6 |
7 | h3 {
8 | margin-bottom: 30px;
9 | font-size: 22px;
10 | font-weight: @fontWeightStrong;
11 | color: @BLANK04;
12 | }
13 |
14 | .form {
15 | width: 260px;
16 | }
17 |
18 | .input {
19 | width: 140px;
20 | }
21 |
22 | .btn {
23 | width: 100px;
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/src/layouts/Setting/ResetPassword/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/color';
2 | @import '@/styles/token';
3 |
4 | .container {
5 | padding: 24px;
6 |
7 | h3 {
8 | margin-bottom: 30px;
9 | font-size: 22px;
10 | font-weight: @fontWeightStrong;
11 | color: @BLANK04;
12 | }
13 |
14 | .form {
15 | width: 260px;
16 | }
17 |
18 | .input {
19 | width: 140px;
20 | }
21 |
22 | .btn {
23 | width: 100px;
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/src/pages/EditAgent/AgentArrangeConfig/EventBindModal/index.less:
--------------------------------------------------------------------------------
1 | .input-box {
2 | margin-top: 16px;
3 | font-size: 12px;
4 | cursor: pointer;
5 | }
6 |
7 | // Table 折叠动画
8 | .table-collapse-wrapper {
9 | max-height: 0;
10 | overflow: hidden;
11 | transition: max-height 0.3s ease-in-out;
12 | }
13 |
14 | .table-collapse-active {
15 | max-height: 600px;
16 | }
17 |
18 | .modal-body {
19 | max-height: 500px;
20 | overflow-y: auto;
21 | }
22 |
--------------------------------------------------------------------------------
/src/components/CustomPopover/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/color';
2 |
3 | .popover-box {
4 | :global {
5 | .ant-popover-inner {
6 | padding: 0;
7 | }
8 | }
9 |
10 | .popover-list {
11 | padding: 4px 6px;
12 |
13 | .p-box {
14 | padding: 4px 30px 4px 10px;
15 | font-size: 14px;
16 | color: @BLANK04;
17 | gap: 4px;
18 |
19 | &.del {
20 | color: @RED;
21 | }
22 | }
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/src/components/VersionHistory/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/color';
2 | @import '@/styles/token';
3 |
4 | .main-wrap {
5 | padding: 0 10px;
6 |
7 | .title {
8 | line-height: 40px;
9 | padding-left: 8px;
10 | margin-top: 20px;
11 | font-size: 14px;
12 | font-weight: @fontWeightStrong;
13 | border-bottom: 1px solid @WHITE15;
14 | color: @BLANK04;
15 | }
16 | }
17 |
18 | .drawer-body {
19 | padding: 0 10px !important;
20 | }
21 |
--------------------------------------------------------------------------------
/src/assets/icons/common/caret_up.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/assets/icons/design/border_left.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/design/border_top.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/pages/EditAgent/AgentArrangeConfig/ComponentSettingModal/CardBind/CardModeSetting/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/color';
2 |
3 | .card-box {
4 | position: relative;
5 | min-height: 95px;
6 | margin-bottom: 16px;
7 | border: 1px solid @GRAY06;
8 | border-radius: 6px;
9 | background-color: @WHITE;
10 |
11 | img {
12 | width: 100%;
13 | }
14 |
15 | .radio {
16 | position: absolute;
17 | top: 6px;
18 | right: 6px;
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/src/pages/SpaceLog/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/color';
2 |
3 | .container {
4 | padding: 6px 22px;
5 |
6 | .search-area {
7 | padding: 26px 0 18px;
8 |
9 | .line {
10 | width: 1px;
11 | height: 88px;
12 | margin: 0 50px 0 70px;
13 | background-color: @GRAY06;
14 | }
15 | }
16 |
17 | .table-area {
18 | :global {
19 | .ant-table {
20 | border-radius: initial;
21 | }
22 | }
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/src/assets/icons/design/border_bottom.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/design/border_right.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/nav/backward.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/pages/EditAgent/DebugDetails/NodeDetails/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/color';
2 |
3 | .container {
4 | display: grid;
5 | grid-template-columns: repeat(2, minmax(0, 1fr));
6 | gap: 10px;
7 | }
8 |
9 | .box {
10 | height: 16px;
11 | color: @GRAY05;
12 | font-size: 12px;
13 |
14 | &.mt-10 {
15 | margin-top: 10px;
16 | }
17 |
18 | .label {
19 | display: inline-block;
20 | }
21 |
22 | .value {
23 | color: @BLANK03;
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/src/pages/SpaceLog/LogDetails/NodeDetails/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/color';
2 |
3 | .container {
4 | display: grid;
5 | grid-template-columns: repeat(2, minmax(0, 1fr));
6 | gap: 10px;
7 | }
8 |
9 | .box {
10 | height: 16px;
11 | color: @GRAY05;
12 | font-size: 12px;
13 |
14 | &.mt-10 {
15 | margin-top: 10px;
16 | }
17 |
18 | .label {
19 | display: inline-block;
20 | }
21 |
22 | .value {
23 | color: @BLANK03;
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/src/assets/icons/common/caret_down.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/assets/icons/common/caret_left.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/assets/icons/common/caret_right.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/pages/Login/SiteProtocol/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/token';
2 | @import '@/styles/color';
3 |
4 | .span {
5 | color: @colorTextTertiary;
6 | }
7 |
8 | .a {
9 | color: @colorTextTertiary;
10 | font-weight: @fontWeightStrong;
11 | // 文本添加下划线
12 | text-decoration: underline;
13 | // 下划线距离文字顶部
14 | text-underline-offset: 3px;
15 |
16 | &:hover {
17 | color: @colorTextTertiary;
18 | // 文本添加下划线
19 | text-decoration: underline;
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/src/utils/form.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | export const customizeRequiredMark = (
4 | label: React.ReactNode,
5 | { required }: { required: boolean },
6 | ) => (
7 | <>
8 | {label}
9 | {required ? (
10 |
11 | *
12 |
13 | ) : null}
14 | >
15 | );
16 |
17 | export const customizeRequiredNoStarMark = (label: React.ReactNode) => (
18 | <>{label}>
19 | );
20 |
--------------------------------------------------------------------------------
/src/components/ConditionRender/index.tsx:
--------------------------------------------------------------------------------
1 | import type { ConditionRenderProps } from '@/types/interfaces/common';
2 | import type { PropsWithChildren } from 'react';
3 | import React from 'react';
4 |
5 | /**
6 | * 条件渲染组件
7 | */
8 | const ConditionRender: React.FC> = ({
9 | children,
10 | condition,
11 | }) => {
12 | if (!!condition) {
13 | return <>{children}>;
14 | }
15 | return null;
16 | };
17 |
18 | export default ConditionRender;
19 |
--------------------------------------------------------------------------------
/src/layouts/MenusLayout/SpaceSection/SpaceTitle/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/color';
2 | @import '@/styles/token';
3 |
4 | .header {
5 | gap: @marginXs;
6 | color: @navSecondMenuText;
7 |
8 | .icon-down {
9 | color: @navSecondMenuTextSecondary;
10 | font-size: @fontSize;
11 | }
12 |
13 | :global {
14 | .ant-typography {
15 | color: @navSecondMenuText;
16 | }
17 |
18 | .anticon {
19 | color: @navSecondMenuTextSecondary;
20 | }
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/src/pages/SpacePageDevelop/ReverseProxyModal/ReverseProxyContentConfig/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/color';
2 | @import '@/styles/token';
3 |
4 | .container {
5 | width: 100%;
6 | height: 100%;
7 | padding-top: 50px;
8 | background-color: @WHITE;
9 |
10 | :global {
11 | .ant-table-wrapper .ant-table-tbody-virtual .ant-table-cell {
12 | border-bottom: none;
13 | }
14 |
15 | .ant-table-footer {
16 | background-color: transparent;
17 | }
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/src/assets/icons/common/more.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/components/base/CopyButton/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/color';
2 | @import '@/styles/token';
3 |
4 | .copy-btn {
5 | color: @colorTextDescription;
6 | font-size: @fontSizeSm;
7 | transition: color 0.2s ease-in-out;
8 | user-select: none;
9 |
10 | &:hover:not(.disabled) {
11 | color: @colorText;
12 | }
13 |
14 | &.disabled {
15 | color: @colorTextDisabled;
16 | cursor: not-allowed;
17 | }
18 | }
19 |
20 | // 图标样式
21 | .copy-image {
22 | margin-right: @marginXxs;
23 | }
24 |
--------------------------------------------------------------------------------
/k8s/config/ingress.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: networking.k8s.io/v1
2 | kind: Ingress
3 | metadata:
4 | name: agent-frontend-ingress
5 | annotations:
6 | nginx.ingress.kubernetes.io/ssl-redirect: "false"
7 | spec:
8 | ingressClassName: "nginx"
9 | rules:
10 | - host: agent-front.space.com
11 | http:
12 | paths:
13 | - path: /
14 | pathType: Prefix
15 | backend:
16 | service:
17 | name: agent-frontend-service
18 | port:
19 | number: 80
--------------------------------------------------------------------------------
/src/assets/svg/plus.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/svg/plus_icon.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/components/base/AuthorInfo/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/token.less';
2 |
3 | .container {
4 | min-width: 30px;
5 | gap: 4px;
6 | color: #828894;
7 | font-size: 12px;
8 | font-weight: @fontWeightStrong;
9 | flex: 0 1 auto; /* 等价于 flex-grow:0; flex-shrink:1; flex-basis:auto; */
10 |
11 | .name {
12 | height: 16px;
13 | line-height: 16px;
14 | }
15 |
16 | .avatar {
17 | width: 16px;
18 | height: 16px;
19 | border-radius: 50%;
20 | object-fit: cover;
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/src/pages/SpaceKnowledge/LocalCustomDocModal/DataProcess/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/color';
2 |
3 | .container {
4 | margin-top: 20px;
5 |
6 | &:first-child {
7 | margin-top: 50px;
8 | }
9 |
10 | .box {
11 | gap: 10px;
12 | padding: 8px 20px;
13 | background-color: @WHITE;
14 |
15 | img {
16 | width: 40px;
17 | height: 40px;
18 | }
19 |
20 | h3 {
21 | font-size: 14px;
22 | }
23 |
24 | .desc {
25 | color: @GRAY05;
26 | }
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/src/assets/icons/design/margin_top.svg:
--------------------------------------------------------------------------------
1 |
12 |
--------------------------------------------------------------------------------
/src/types/enums/theme.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * 主题相关枚举定义
3 | */
4 |
5 | /**
6 | * 布局深浅色风格类型
7 | * 注意:这与 Ant Design 的 theme 无关,仅用于布局风格
8 | */
9 | export enum ThemeLayoutColorStyle {
10 | /** 浅色布局风格 */
11 | LIGHT = 'light',
12 | /** 深色布局风格 */
13 | DARK = 'dark',
14 | }
15 |
16 | /**
17 | * 导航风格类型
18 | * style1: 紧凑模式(无文字导航,有外边距和圆角)
19 | * style2: 展开模式(有文字导航,无外边距和圆角)
20 | */
21 | export enum ThemeNavigationStyleType {
22 | /** 紧凑模式 */
23 | STYLE1 = 'style1',
24 | /** 展开模式 */
25 | STYLE2 = 'style2',
26 | }
27 |
--------------------------------------------------------------------------------
/src/assets/icons/design/margin_bottom.svg:
--------------------------------------------------------------------------------
1 |
12 |
--------------------------------------------------------------------------------
/src/assets/icons/design/margin_right.svg:
--------------------------------------------------------------------------------
1 |
12 |
--------------------------------------------------------------------------------
/src/types/enums/square.ts:
--------------------------------------------------------------------------------
1 | // 目标对象(智能体、工作流、插件)ID,可用值:Agent,Plugin,Workflow,KNOWLEDGE
2 | export enum SquareAgentTypeEnum {
3 | Agent = 'Agent',
4 | Plugin = 'Plugin',
5 | Workflow = 'Workflow',
6 | Knowledge = 'Knowledge',
7 | // 模板
8 | Template = 'Template',
9 | }
10 |
11 | // 自定义广场-模板目标类型(全部、智能体、工作流、页面应用)
12 | export enum SquareTemplateTargetTypeEnum {
13 | // 全部
14 | All = 'All',
15 | // 智能体
16 | Agent = 'Agent',
17 | // 工作流
18 | Workflow = 'Workflow',
19 | // 应用页面
20 | Page = 'Page',
21 | }
22 |
--------------------------------------------------------------------------------
/mock/userAPI.ts:
--------------------------------------------------------------------------------
1 | const users = [
2 | { id: 0, name: 'Umi', nickName: 'U', gender: 'MALE' },
3 | { id: 1, name: 'Fish', nickName: 'B', gender: 'FEMALE' },
4 | ];
5 |
6 | export default {
7 | 'GET /api/v1/queryUserList': (req: any, res: any) => {
8 | res.json({
9 | success: true,
10 | data: { list: users },
11 | errorCode: 0,
12 | });
13 | },
14 | 'PUT /api/v1/user/': (req: any, res: any) => {
15 | res.json({
16 | success: true,
17 | errorCode: 0,
18 | });
19 | },
20 | };
21 |
--------------------------------------------------------------------------------
/src/assets/icons/design/margin_left.svg:
--------------------------------------------------------------------------------
1 |
12 |
--------------------------------------------------------------------------------
/src/components/CreateKnowledge/SkillListEmpty/index.tsx:
--------------------------------------------------------------------------------
1 | import classNames from 'classnames';
2 | import React from 'react';
3 | import styles from './index.less';
4 |
5 | const cx = classNames.bind(styles);
6 |
7 | const SkillListEmpty: React.FC<{
8 | title?: string;
9 | onClick?: (e: React.MouseEvent) => void;
10 | }> = ({ title = '请选择工作流', onClick }) => (
11 |
12 | {title}
13 |
14 | );
15 |
16 | export default SkillListEmpty;
17 |
--------------------------------------------------------------------------------
/src/components/ChatView/AttachFile/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/color';
2 |
3 | .files-container {
4 | display: grid;
5 | grid-template-columns: repeat(2, auto);
6 | gap: 10px;
7 | margin-bottom: 10px;
8 |
9 | .file-box {
10 | position: relative;
11 | padding: 10px;
12 | background-color: @WHITE04;
13 | border-radius: 10px;
14 | font-size: 14px;
15 | color: @BLANK24;
16 |
17 | img {
18 | width: 50px;
19 | margin-right: 5px;
20 | border-radius: 10px;
21 | }
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/src/assets/icons/design/margin_vertical.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/components/EcosystemCard/SharedIcon/images.constants.ts:
--------------------------------------------------------------------------------
1 | // MCP状态图标
2 | import { ReactComponent as ICON_EDIT } from './images/icon_edit.svg';
3 | import { ReactComponent as ICON_OFFLINED } from './images/icon_offlined.svg';
4 | import { ReactComponent as ICON_PUBLISHED } from './images/icon_published.svg';
5 | import { ReactComponent as ICON_REJECTED } from './images/icon_rejected.svg';
6 | import { ReactComponent as ICON_SEAL } from './images/icon_seal.svg';
7 |
8 | export { ICON_EDIT, ICON_OFFLINED, ICON_PUBLISHED, ICON_REJECTED, ICON_SEAL };
9 |
--------------------------------------------------------------------------------
/src/layouts/MenusLayout/Header/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/color';
2 |
3 | .logo {
4 | width: 32px;
5 | height: 32px;
6 | border-radius: 8px;
7 | }
8 |
9 | .add-agent {
10 | margin: 40px 0 10px;
11 | width: 40px;
12 | height: 40px;
13 | }
14 |
15 | .divider-horizontal {
16 | width: 24px;
17 | margin: 12px 0;
18 | border-bottom: 1px solid @GRAY02;
19 | }
20 |
21 | .logo-container {
22 | height: 52px;
23 | display: flex;
24 | align-items: center;
25 | justify-content: center;
26 | margin-bottom: 24px;
27 | }
28 |
--------------------------------------------------------------------------------
/src/pages/EditAgent/AgentArrangeConfig/ComponentSettingModal/CardBind/BindDataSource/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/color';
2 |
3 | .space-box {
4 | gap: 8px;
5 |
6 | .radius-number {
7 | width: 30px;
8 | height: 30px;
9 | line-height: 30px;
10 | border-radius: 50%;
11 | text-align: center;
12 | color: @WHITE;
13 | background-color: @BLUE03;
14 | }
15 | }
16 |
17 | .link-switch {
18 | position: absolute;
19 | right: 0;
20 | top: -25px;
21 | }
22 |
23 | .footer {
24 | text-align: right;
25 | }
26 |
--------------------------------------------------------------------------------
/src/hooks/useSendCode.ts:
--------------------------------------------------------------------------------
1 | import { apiSendCode } from '@/services/account';
2 | import { message } from 'antd';
3 | import { useRequest } from 'umi';
4 |
5 | const useSendCode = () => {
6 | // 发送验证码
7 | const { run: runSendCode, loading: sendLoading } = useRequest(apiSendCode, {
8 | manual: true,
9 | debounceInterval: 300,
10 | onSuccess: () => {
11 | message.success('验证码已发送');
12 | },
13 | });
14 |
15 | return {
16 | runSendCode,
17 | sendLoading,
18 | };
19 | };
20 |
21 | export default useSendCode;
22 |
--------------------------------------------------------------------------------
/src/pages/EditAgent/AgentArrangeConfig/ComponentSettingModal/InvokeType/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/color';
2 | @import '@/styles/token';
3 |
4 | .container {
5 | height: 100%;
6 | padding: 50px 24px 24px;
7 | padding-left: 20px;
8 | background-color: @WHITE;
9 | overflow: hidden;
10 |
11 | h3 {
12 | font-weight: @fontWeightStrong;
13 | margin-bottom: 20px;
14 |
15 | .icon {
16 | color: @BLANK11;
17 | font-size: 14px;
18 | }
19 | }
20 |
21 | .footer {
22 | text-align: right;
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/src/pages/EditAgent/AgentArrangeConfig/ComponentSettingModal/OutputWay/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/color';
2 | @import '@/styles/token';
3 |
4 | .container {
5 | height: 100%;
6 | padding: 50px 24px 24px;
7 | padding-left: 20px;
8 | background-color: @WHITE;
9 | overflow: hidden;
10 |
11 | h3 {
12 | font-weight: @fontWeightStrong;
13 | margin-bottom: 20px;
14 |
15 | .icon {
16 | color: @BLANK11;
17 | font-size: 14px;
18 | }
19 | }
20 |
21 | .footer {
22 | text-align: right;
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/src/assets/icons/common/arrow_down.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/assets/icons/design/align_center.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/design/align_justify.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/design/align_left.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/design/align_right.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/design/margin_horizontal.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/design/padding_bottom.svg:
--------------------------------------------------------------------------------
1 |
12 |
--------------------------------------------------------------------------------
/src/assets/icons/design/padding_left.svg:
--------------------------------------------------------------------------------
1 |
12 |
--------------------------------------------------------------------------------
/src/assets/icons/design/padding_right.svg:
--------------------------------------------------------------------------------
1 |
12 |
--------------------------------------------------------------------------------
/src/assets/icons/design/padding_top.svg:
--------------------------------------------------------------------------------
1 |
12 |
--------------------------------------------------------------------------------
/src/components/ShowStand/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/color';
2 |
3 | .inner-container {
4 | padding: 10px;
5 | height: 100%;
6 | overflow-y: hidden; // 添加这行,使内容溢出时显示垂直滚动条
7 | &:hover {
8 | overflow-y: scroll;
9 | }
10 |
11 | position: relative;
12 |
13 | .card-item-container {
14 | position: absolute;
15 | //width: 381px;
16 | left: 10px;
17 | width: 100%;
18 | max-width: 400px;
19 |
20 | .card-style-two {
21 | background-color: @WHITE01;
22 | border-radius: 6px;
23 | }
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/src/pages/Antv-X6/component/nodeItem.less:
--------------------------------------------------------------------------------
1 | .array-link-setting {
2 | width: 330px;
3 | font-size: 12px;
4 |
5 | .array-link-setting-select-label {
6 | margin-top: 40px;
7 | font-size: 14px;
8 | }
9 |
10 | .array-link-setting-select {
11 | width: 95%;
12 | }
13 |
14 | .array-link-setting-select-option {
15 | position: relative;
16 | }
17 |
18 | .array-link-setting-select-option-icon {
19 | margin-right: 4px;
20 | width: 16px; // Adjust based on icon size
21 | display: inline-block;
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/src/pages/Home/DraggableHomeContent/constants.ts:
--------------------------------------------------------------------------------
1 | export const DRAG_TYPES = {
2 | CATEGORY: 'CATEGORY',
3 | AGENT: 'AGENT',
4 | } as const;
5 |
6 | export const HOVER_TEXTS = {
7 | CATEGORY: '可拖拽更换栏目顺序',
8 | AGENT: '可拖拽更换智能体顺序',
9 | } as const;
10 |
11 | // 添加其他可能的常量
12 | export const LOADING_MESSAGES = {
13 | UPDATING_SORT: '正在更新排序...',
14 | } as const;
15 |
16 | export const SUCCESS_MESSAGES = {
17 | SORT_SUCCESS: '排序更新成功',
18 | } as const;
19 |
20 | export const ERROR_MESSAGES = {
21 | SORT_FAILED: '排序更新失败,请重试',
22 | } as const;
23 |
--------------------------------------------------------------------------------
/k8s/config/frontend-deployment.yaml:
--------------------------------------------------------------------------------
1 | # frontend-deployment.yaml
2 | apiVersion: apps/v1
3 | kind: Deployment
4 | metadata:
5 | name: agent-frontend-deployment
6 | spec:
7 | replicas: 1
8 | selector:
9 | matchLabels:
10 | app: agent-frontend
11 | template:
12 | metadata:
13 | labels:
14 | app: agent-frontend
15 | spec:
16 | containers:
17 | - name: agent-frontend
18 | image: localhost:5000/agent-platform-front:latest
19 | ports:
20 | - containerPort: 80
21 | - containerPort: 443
--------------------------------------------------------------------------------
/src/components/ChatTitleActions/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/color';
2 | @import '@/styles/token';
3 |
4 | .title-actions {
5 | display: flex;
6 | align-items: center;
7 | margin-left: @margin;
8 | }
9 |
10 | // 收藏状态样式
11 | .collected {
12 | color: @orange;
13 | }
14 |
15 | /* 响应式样式 */
16 | @media screen and (max-width: 720px) {
17 | .title-actions {
18 | margin-left: 0;
19 | justify-content: center;
20 | }
21 | }
22 |
23 | @media screen and (max-width: 480px) {
24 | .title-actions {
25 | margin-left: 0;
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/src/components/CreateKnowledge/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/color';
2 | @import '@/styles/token';
3 |
4 | .header {
5 | gap: 28px;
6 | margin: 30px 0;
7 | }
8 |
9 | .box {
10 | gap: 4px;
11 | width: 130px;
12 | height: 70px;
13 | border-radius: 10px;
14 | background: @WHITE06;
15 | box-sizing: border-box;
16 | border: 1px solid @GRAY04;
17 | font-size: 18px;
18 | font-weight: @fontWeightStrong;
19 | color: @BLANK04;
20 | transition: border-color 0.3s;
21 |
22 | &.active {
23 | border-color: @BLUE02;
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/src/constants/square.constants.ts:
--------------------------------------------------------------------------------
1 | import { SquareTemplateTargetTypeEnum } from '@/types/enums/square';
2 |
3 | // 广场-模板分类列表
4 | export const SQUARE_TEMPLATE_SEGMENTED_LIST = [
5 | {
6 | value: SquareTemplateTargetTypeEnum.All,
7 | label: '全部',
8 | },
9 | {
10 | value: SquareTemplateTargetTypeEnum.Agent,
11 | label: '智能体',
12 | },
13 | {
14 | value: SquareTemplateTargetTypeEnum.Workflow,
15 | label: '工作流',
16 | },
17 | {
18 | value: SquareTemplateTargetTypeEnum.Page,
19 | label: '应用页面',
20 | },
21 | ];
22 |
--------------------------------------------------------------------------------
/src/pages/EditAgent/AgentArrangeConfig/OpenRemarksEdit/GuidQuestionSetModal/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/color';
2 |
3 | .star {
4 | color: @RED;
5 | }
6 |
7 | .input-box {
8 | margin-top: 16px;
9 | font-size: 12px;
10 | cursor: pointer;
11 | }
12 |
13 | // Table 折叠动画
14 | .table-collapse-wrapper {
15 | max-height: 0;
16 | overflow: hidden;
17 | transition: max-height 0.3s ease-in-out;
18 | }
19 |
20 | .table-collapse-active {
21 | max-height: 600px;
22 | }
23 |
24 | .modal-body {
25 | max-height: 500px;
26 | overflow-y: auto;
27 | }
28 |
--------------------------------------------------------------------------------
/src/pages/Chat/ShowArea/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/token';
2 |
3 | .rightSidebar {
4 | width: 434px;
5 | //padding: 0 @padding;
6 | border-left: @lineWidth @lineType @colorBorderSecondary;
7 | }
8 |
9 | .container {
10 | position: sticky;
11 | height: 100%;
12 | box-sizing: border-box;
13 | z-index: 999;
14 |
15 | .box {
16 | // margin-top: 30px;
17 | }
18 |
19 | .main-wrap {
20 | // padding: 30px 12px;
21 | }
22 | }
23 |
24 | @media (max-width: 768px) {
25 | .container {
26 | display: none !important;
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/src/components/LabelStar/index.tsx:
--------------------------------------------------------------------------------
1 | import type { LabelStarProps } from '@/types/interfaces/library';
2 | import classNames from 'classnames';
3 | import React from 'react';
4 | import styles from './index.less';
5 |
6 | const cx = classNames.bind(styles);
7 |
8 | const LabelStar: React.FC = ({ className, label }) => {
9 | return (
10 |
11 | {label}
12 | *
13 |
14 | );
15 | };
16 |
17 | export default LabelStar;
18 |
--------------------------------------------------------------------------------
/src/components/base/FileTypeIcon/index.less:
--------------------------------------------------------------------------------
1 | .file-type-icon {
2 | display: inline-block;
3 | border-radius: 4px;
4 | overflow: hidden;
5 |
6 | // 图标样式
7 | img {
8 | object-fit: cover;
9 | border-radius: 4px;
10 | }
11 |
12 | // 文件类型图标特殊样式
13 | &[src*='doc.png'],
14 | &[src*='excel.png'],
15 | &[src*='media.png'],
16 | &[src*='pdf.png'],
17 | &[src*='ppt.png'] {
18 | background-color: #f5f5f5;
19 | border: 1px solid #e8e8e8;
20 |
21 | img {
22 | padding: 8px;
23 | background-color: transparent;
24 | }
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/src/pages/EditAgent/AgentArrangeConfig/CreateVariables/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/color';
2 |
3 | .table-container {
4 | :global {
5 | .ant-table-content .ant-table-thead > tr > th {
6 | padding-left: 0;
7 | font-size: 14px;
8 | color: @GRAY05;
9 | }
10 |
11 | .ant-table-content .ant-table-tbody > tr > td {
12 | padding: 10px 10px 10px 0;
13 | color: @BLANK04;
14 | font-size: 12px;
15 | }
16 |
17 | .ant-table-footer {
18 | padding: 10px 0;
19 | background-color: transparent;
20 | }
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/src/utils/mcp.ts:
--------------------------------------------------------------------------------
1 | import { DeployStatusEnum } from '@/types/enums/mcp';
2 |
3 | // 获取mcp部署状态
4 | export const getMcpDeployStatus = (status?: DeployStatusEnum) => {
5 | switch (status) {
6 | case DeployStatusEnum.Initialization:
7 | return '待部署';
8 | case DeployStatusEnum.Deploying:
9 | return '部署中';
10 | case DeployStatusEnum.Deployed:
11 | return '已部署';
12 | case DeployStatusEnum.DeployFailed:
13 | return '部署失败';
14 | case DeployStatusEnum.Stopped:
15 | return '已停止';
16 | default:
17 | return '';
18 | }
19 | };
20 |
--------------------------------------------------------------------------------
/src/types/global.d.ts:
--------------------------------------------------------------------------------
1 | // interface Window {
2 | // publicPath?: string;
3 | // }
4 | declare namespace Global {
5 | interface Pagination {
6 | total: number;
7 | pageSize: number;
8 | current: number;
9 | }
10 |
11 | interface IGetList {
12 | pageNo: number;
13 | pageSize: number;
14 | category?: string;
15 | kw?: string;
16 | spaceId?: number;
17 | dataType?: string;
18 | justReturnSpaceData?: boolean;
19 | }
20 | }
21 |
22 | // 扩展全局作用域
23 | declare global {
24 | interface Window {
25 | Global: typeof Global;
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/src/pages/SpacePageDevelop/PathParamsConfigModal/PathParamsConfigContent/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/color';
2 | @import '@/styles/token';
3 |
4 | .container {
5 | position: relative;
6 | height: 100%;
7 | padding-top: 50px;
8 | background-color: @WHITE;
9 | overflow: hidden;
10 |
11 | .add-btn {
12 | position: absolute;
13 | top: 10px;
14 | left: 0;
15 | width: 100px;
16 | margin-left: 16px;
17 | }
18 |
19 | .title {
20 | font-size: 14px;
21 | }
22 |
23 | .footer {
24 | padding: 24px 16px;
25 | text-align: right;
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/src/assets/icons/design/padding_vertical.svg:
--------------------------------------------------------------------------------
1 |
12 |
--------------------------------------------------------------------------------
/src/assets/icons/design/padding_horizontal.svg:
--------------------------------------------------------------------------------
1 |
12 |
--------------------------------------------------------------------------------
/src/pages/AppDev/components/PageEditModal/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/color';
2 | @import '@/styles/token';
3 |
4 | .upload-avatar {
5 | width: 356px !important;
6 | height: 200px !important;
7 | }
8 |
9 | .text-tip {
10 | font-size: @fontSizeSm;
11 | color: @colorTextSecondary;
12 | }
13 |
14 | .modal-content {
15 | width: 560px;
16 | background-color: @WHITE12 !important;
17 | overflow: hidden;
18 |
19 | .modal-header {
20 | background-color: @WHITE12;
21 | }
22 |
23 | .modal-body {
24 | max-height: calc(100vh - 300px);
25 | overflow-y: auto;
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/src/pages/SpaceMcpCreate/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/color.less';
2 | @import '@/styles/token';
3 |
4 | .container {
5 | padding: 0 10px;
6 |
7 | .main-container {
8 | width: 775px;
9 | margin: 0 auto;
10 | padding: 30px 0;
11 |
12 | .upload-box {
13 | display: block;
14 | margin: 30px auto 50px;
15 | }
16 |
17 | .sub-title {
18 | margin-left: 6px;
19 | font-size: 12px;
20 | font-weight: normal;
21 | color: @GRAY07;
22 | }
23 |
24 | .collapse-container {
25 | background-color: @WHITE;
26 | }
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | /node_modules
2 | /.env.local
3 | /.umirc.local.ts
4 | /config/config.local.ts
5 | /src/.umi
6 | /src/.umi-production
7 | /src/.umi-test
8 | /.umi
9 | /.umi-production
10 | /.umi-test
11 | /dist
12 | /.mfsu
13 | .swc
14 | /.idea
15 | /.yarn.lock
16 | package-lock.json
17 |
18 | # Ignore DevSpace cache and log folder
19 | .devspace/
20 |
21 | /k8s
22 | /devspace.yaml
23 | /devspace_start.sh
24 | /Dockerfile
25 |
26 | # /.husky
27 | /src/mock
28 | .npm-cache
29 |
30 | # Claude local settings
31 | .claude/settings.local.json
32 |
33 | .claude
34 | .cursor
35 | .cursorrules
36 | .DS_Store
37 |
--------------------------------------------------------------------------------
/src/models/model.ts:
--------------------------------------------------------------------------------
1 | import { useState } from 'react';
2 |
3 | const useModelSetting = () => {
4 | const [open, setOpen] = useState(false);
5 | // 展开收起模型设置的弹窗
6 | const [show, setShow] = useState(false);
7 | // 展开收起提示词
8 | const [expand, setExpand] = useState(false);
9 | // 展开收起试运行
10 | const [testRun, setTestRun] = useState(false);
11 |
12 | return {
13 | open,
14 | setOpen,
15 | show,
16 | setShow,
17 | expand,
18 | setExpand,
19 | testRun,
20 | setTestRun,
21 | };
22 | };
23 |
24 | export default useModelSetting;
25 |
--------------------------------------------------------------------------------
/src/pages/SpacePageDevelop/PageCreateModal/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/color';
2 | @import '@/styles/token';
3 |
4 | .upload-avatar {
5 | width: 356px !important;
6 | height: 200px !important;
7 | }
8 |
9 | .text-tip {
10 | font-size: @fontSizeSm;
11 | color: @colorTextSecondary;
12 | }
13 |
14 | .modal-content {
15 | width: 560px;
16 | background-color: @WHITE12 !important;
17 | overflow: hidden;
18 |
19 | .modal-header {
20 | background-color: @WHITE12;
21 | }
22 |
23 | .modal-body {
24 | max-height: calc(100vh - 300px);
25 | overflow-y: auto;
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/src/components/ChatView/ChatBottomDebug/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/color';
2 |
3 | .container {
4 | height: 32px;
5 | color: @GRAY05;
6 | font-size: 12px;
7 |
8 | .elapsed-time {
9 | gap: 12px;
10 |
11 | .vertical-line {
12 | width: 1px;
13 | height: 12px;
14 | background-color: @GRAY05;
15 | }
16 | }
17 |
18 | .more-action {
19 | gap: 6px;
20 |
21 | .icon {
22 | width: 24px;
23 | height: 24px;
24 | font-size: 14px;
25 | color: @GRAY05;
26 | }
27 | }
28 | }
29 |
30 | .copy-image {
31 | width: 16px;
32 | height: 16px;
33 | }
34 |
--------------------------------------------------------------------------------
/src/components/VersionHistory/PublishRecordItem/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/color';
2 |
3 | .container {
4 | gap: 4px;
5 | padding: 10px 8px;
6 | font-size: 12px;
7 | border-bottom: 1px solid @GRAY06;
8 | position: relative;
9 |
10 | &:last-child {
11 | border-bottom-color: transparent;
12 | }
13 |
14 | .header {
15 | gap: 8px;
16 |
17 | .name {
18 | max-width: 60%;
19 | color: @BLUE04;
20 | }
21 |
22 | .author-update-time {
23 | color: @BLUE04;
24 | }
25 | }
26 |
27 | .desc {
28 | line-height: 20px;
29 | color: @BLANK04;
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/src/pages/SpaceMcpEdit/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/color.less';
2 | @import '@/styles/token';
3 |
4 | .container {
5 | padding: 0 10px;
6 | overflow: hidden;
7 |
8 | .main-container {
9 | width: 775px;
10 | margin: 0 auto;
11 | padding: 30px 0;
12 |
13 | .upload-box {
14 | display: block;
15 | margin: 30px auto 50px;
16 | }
17 |
18 | .sub-title {
19 | margin-left: 6px;
20 | font-size: 12px;
21 | font-weight: normal;
22 | color: @GRAY07;
23 | }
24 |
25 | .collapse-container {
26 | background-color: @WHITE;
27 | }
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/src/types/enums/dataTable.ts:
--------------------------------------------------------------------------------
1 | // 字段类型:1:String(VARCHAR(255));2:Integer(INT);3:Number(DECIMAL(20,6));4:Boolean(TINYINT(1));5:Date(DATETIME);6:PrimaryKey(BIGINT);7:MEDIUMTEXT(MEDIUMTEXT)
2 | export enum TableFieldTypeEnum {
3 | // 短文本
4 | String = 1,
5 | // 整数
6 | Integer = 2,
7 | // 数字
8 | Number = 3,
9 | // 布尔
10 | Boolean = 4,
11 | // 日期
12 | Date = 5,
13 | // 主键
14 | PrimaryKey = 6,
15 | // 长文本,对应数据库类型: MEDIUMTEXT
16 | MEDIUMTEXT = 7,
17 | }
18 |
19 | // 数据表tabs枚举
20 | export enum TableTabsEnum {
21 | // 表结构
22 | Structure = 'Structure',
23 | // 表数据
24 | Data = 'Data',
25 | }
26 |
--------------------------------------------------------------------------------
/src/assets/icons/common/console.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/components/base/McpStatus/images.constants.ts:
--------------------------------------------------------------------------------
1 | // MCP状态图标
2 | import { ReactComponent as ICON_DEPLOY_FAILED } from './images/icon_deploy_failed.svg';
3 | import { ReactComponent as ICON_DEPLOYED } from './images/icon_deployed.svg';
4 | import { ReactComponent as ICON_DEPLOYING } from './images/icon_deploying.svg';
5 | import { ReactComponent as ICON_INITIALIZATION } from './images/icon_initialization.svg';
6 | import { ReactComponent as ICON_STOPPED } from './images/icon_stopped.svg';
7 |
8 | export {
9 | ICON_DEPLOY_FAILED,
10 | ICON_DEPLOYED,
11 | ICON_DEPLOYING,
12 | ICON_INITIALIZATION,
13 | ICON_STOPPED,
14 | };
15 |
--------------------------------------------------------------------------------
/.claude/settings.local.json:
--------------------------------------------------------------------------------
1 | {
2 | "includeCoAuthoredBy": false,
3 | "permissions": {
4 | "allow": [
5 | "Bash(npm run build:dev:*)",
6 | "Bash(npm run)",
7 | "Bash(rg:*)",
8 | "Bash(git add:*)",
9 | "Bash(git reset:*)",
10 | "Bash(git push:*)",
11 | "Bash(tree:*)",
12 | "Bash(npm run type-check:*)",
13 | "Bash(timeout:*)",
14 | "Bash(git rm:*)",
15 | "Bash(git commit:*)",
16 | "Bash(git stash pop:*)",
17 | "Bash(npm run dev)",
18 | "Bash(cat:*)",
19 | "Bash(git config:*)"
20 | ],
21 | "deny": [],
22 | "ask": []
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/src/layouts/MenusLayout/User/UserAvatar/index.tsx:
--------------------------------------------------------------------------------
1 | import avatarImage from '@/assets/images/avatar.png';
2 | import type { UserAvatarType } from '@/types/interfaces/layouts';
3 | import classNames from 'classnames';
4 | import React from 'react';
5 | import styles from './index.less';
6 |
7 | const cx = classNames.bind(styles);
8 |
9 | const UserAvatar: React.FC = ({ avatar, onClick }) => {
10 | return (
11 |
12 |

13 |
14 | );
15 | };
16 |
17 | export default UserAvatar;
18 |
--------------------------------------------------------------------------------
/src/assets/icons/chat/clock.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/layouts/InfiniteList/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/color';
2 |
3 | .container {
4 | height: 500px;
5 | padding-right: 5px;
6 | }
7 |
8 | .row {
9 | gap: 20px;
10 | color: @BLANK04;
11 | font-size: 12px;
12 | background-color: @WHITE03;
13 | margin-bottom: 5px;
14 |
15 | p {
16 | padding: 5px 10px;
17 | }
18 |
19 | span {
20 | color: @GRAY07;
21 | display: inline-block;
22 | }
23 |
24 | .icon {
25 | padding: 5px 10px;
26 | display: none;
27 | }
28 |
29 | &:hover {
30 | background-color: @WHITE18;
31 |
32 | .icon {
33 | display: inline-block;
34 | }
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/src/pages/EditAgent/AgentArrangeConfig/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/color';
2 | @import '@/styles/token';
3 |
4 | .container {
5 | border-left: @lineWidth solid @colorSplit;
6 | padding: @paddingXs @padding;
7 | width: 50%;
8 | //隐藏滚动条
9 | &::-webkit-scrollbar {
10 | display: none;
11 | }
12 | }
13 |
14 | .text {
15 | color: @colorTextTertiary;
16 | font-size: @fontSizeSm;
17 | line-height: @lineHeight;
18 | }
19 |
20 | .page-setting-item {
21 | height: 40px;
22 | border-radius: 3px;
23 | border-bottom: 1px solid @GRAY01;
24 |
25 | &:last-child {
26 | border-bottom-color: transparent;
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/src/constants/home.constants.ts:
--------------------------------------------------------------------------------
1 | export const ACCESS_TOKEN = 'ACCESS_TOKEN';
2 | export const USER_INFO = 'USER_INFO';
3 | // expireDate
4 | export const EXPIRE_DATE = 'EXPIRE_DATE';
5 | export const PHONE = 'PHONE';
6 | export const SPACE_ID = 'SPACE_ID';
7 | export const SPACE_URL = 'SPACE_URL';
8 |
9 | // 租户配置信息
10 | export const TENANT_CONFIG_INFO = 'TENANT_CONFIG_INFO';
11 |
12 | // 应用版本号存储 key
13 | export const APP_VERSION = 'APP_VERSION';
14 |
15 | // 推荐聊天主题
16 | export const RECOMMEND_TEXT = [
17 | '女娲智能体设计平台功能概述',
18 | '自然语言处理实用教材推荐',
19 | '女娲智能体设计平台使用手册',
20 | '准备考研,在大二下学期需要开始准备哪些方面?',
21 | '准备考研,在大二下学期需要开始准备哪些方面?',
22 | ];
23 |
--------------------------------------------------------------------------------
/src/pages/Antv-X6/component/pluginNode.less:
--------------------------------------------------------------------------------
1 | .border-bottom {
2 | border-bottom: 1px solid #e8e8e8;
3 | }
4 |
5 | .node-form-label-style {
6 | width: 126px;
7 | }
8 |
9 | .margin-bottom-10 {
10 | margin-bottom: 10px;
11 | }
12 |
13 | .form-name-style {
14 | max-width: 100px;
15 | overflow: hidden;
16 | }
17 |
18 | .input-item-style {
19 | display: flex;
20 |
21 | .margin-right-6 {
22 | margin-right: 6px;
23 | }
24 | }
25 |
26 | .knowledge-node-box {
27 | // background-color: #cccc;
28 | padding: 10px;
29 | font-size: 12px;
30 | color: #838181;
31 |
32 | .left-label-style {
33 | width: 120px;
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/src/assets/icons/chat/info.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/types/interfaces/message.ts:
--------------------------------------------------------------------------------
1 | import type { MessageReadStatusEnum } from '@/types/enums/menus';
2 | import type { CreatorInfo } from '@/types/interfaces/agent';
3 |
4 | // 查询用户消息列表输入参数
5 | export interface NotifyMessageListParams {
6 | // 最后消息ID
7 | lastId?: number;
8 | // 查询条数
9 | size: number;
10 | // 消息状态,可用值:Unread,Read
11 | readStatus?: MessageReadStatusEnum;
12 | }
13 |
14 | // 用户消息信息
15 | export interface NotifyMessageInfo {
16 | id: number;
17 | // 消息内容
18 | content: string;
19 | // 消息状态,可用值:Unread,Read
20 | readStatus: MessageReadStatusEnum;
21 | sender: CreatorInfo;
22 | // 创建时间(消息发送时间)
23 | created: string;
24 | }
25 |
--------------------------------------------------------------------------------
/src/components/ChatView/ChatBottomMore/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/color';
2 | @import '@/styles/token';
3 |
4 | .container {
5 | height: 32px;
6 | color: @colorTextDescription;
7 | font-size: @fontSizeSm;
8 |
9 | .elapsed-time {
10 | gap: 12px;
11 |
12 | .vertical-line {
13 | width: 1px;
14 | height: 12px;
15 | background-color: @GRAY05;
16 | }
17 | }
18 |
19 | .more-action {
20 | gap: 6px;
21 |
22 | .icon {
23 | width: 24px;
24 | height: 24px;
25 | font-size: 14px;
26 | color: @GRAY05;
27 | }
28 | }
29 | }
30 |
31 | .copy-image {
32 | width: 16px;
33 | height: 16px;
34 | }
35 |
--------------------------------------------------------------------------------
/src/assets/icons/common/import.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/layouts/MenusLayout/UserRelAgent/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/color';
2 |
3 | .row {
4 | padding: 6px 8px;
5 | gap: 10px;
6 |
7 | &:hover {
8 | .icon {
9 | visibility: visible;
10 | }
11 | }
12 |
13 | img {
14 | width: 16px;
15 | height: 16px;
16 | border-radius: 4px;
17 | }
18 |
19 | .name {
20 | font-size: 14px;
21 | line-height: 22px;
22 | color: @BLANK04;
23 | }
24 |
25 | .icon {
26 | color: @GRAY05;
27 | visibility: hidden;
28 | border-radius: 4px;
29 | transition: background-color ease-in-out 0.2s;
30 |
31 | &:hover {
32 | background-color: @WHITE14;
33 | }
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/src/assets/icons/chat/chat.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/components/NoMoreDivider/index.tsx:
--------------------------------------------------------------------------------
1 | import { Divider } from 'antd';
2 | import classNames from 'classnames';
3 | import React from 'react';
4 | import styles from './index.less';
5 |
6 | const cx = classNames.bind(styles);
7 |
8 | export interface NoMoreDividerProps {
9 | /** 自定义文本,默认为"没有更多了" */
10 | text?: string;
11 | }
12 |
13 | const NoMoreDivider: React.FC = ({
14 | text = '没有更多了',
15 | }) => {
16 | return (
17 |
18 |
19 | {text}
20 |
21 |
22 | );
23 | };
24 |
25 | export default NoMoreDivider;
26 |
--------------------------------------------------------------------------------
/src/assets/icons/nav/message.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/assets/icons/chat/close_regular.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/components/Card/CardFour/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/color';
2 | @import '@/styles/token';
3 |
4 | .container {
5 | padding: 16px 20px;
6 | border-bottom: 1px solid @GRAY08;
7 |
8 | &:last-child {
9 | border-bottom: none;
10 | }
11 |
12 | h3 {
13 | color: @BLANK31;
14 | margin-bottom: 6px;
15 | font-size: 16px;
16 | font-weight: @fontWeightStrong;
17 | word-break: break-all;
18 | }
19 |
20 | p {
21 | line-height: 20px;
22 | color: @GRAY05;
23 | font-size: 14px;
24 | word-break: break-all;
25 | }
26 |
27 | img {
28 | width: 40px;
29 | height: 40px;
30 | object-fit: cover;
31 | margin-left: 10px;
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/src/components/Card/CardTwo/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/color';
2 | @import '@/styles/token';
3 |
4 | .container {
5 | padding: 16px 20px;
6 | border-bottom: 1px solid @GRAY08;
7 |
8 | &:last-child {
9 | border-bottom: none;
10 | }
11 |
12 | h3 {
13 | color: @BLANK31;
14 | margin-bottom: 6px;
15 | font-size: 16px;
16 | font-weight: @fontWeightStrong;
17 | word-break: break-all;
18 | }
19 |
20 | p {
21 | line-height: 20px;
22 | color: @GRAY05;
23 | font-size: 14px;
24 | word-break: break-all;
25 | }
26 |
27 | img {
28 | width: 40px;
29 | height: 40px;
30 | object-fit: cover;
31 | margin-left: 10px;
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/src/types/declare.d.ts:
--------------------------------------------------------------------------------
1 | // types/index.d.ts
2 | declare module 'react-beautiful-dnd';
3 | declare module 'classnames';
4 | declare module 'lodash';
5 | declare module 'umi';
6 | // 修改为monaco-editor自带的类型声明
7 | // 修正路径声明
8 | declare module 'monaco-editor/esm/vs/basic-languages/python/python' {
9 | import { languages } from 'monaco-editor';
10 | export const conf: languages.LanguageConfiguration;
11 | export const language: languages.IMonarchLanguage;
12 | }
13 |
14 | // 添加Python worker类型声明
15 | // 修正为正确的Python worker路径
16 | declare module 'monaco-editor/esm/vs/basic-languages/python/python.worker' {
17 | export default class PythonWorker {
18 | constructor(ctx: any);
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/src/hooks/useDisableSaveShortcut.ts:
--------------------------------------------------------------------------------
1 | import { useEffect } from 'react';
2 |
3 | /**
4 | * 禁用浏览器原生 Ctrl+S / Cmd+S 快捷键
5 | * @param onSave 可选,拦截后自定义保存逻辑
6 | */
7 | const useDisableSaveShortcut = (onSave?: () => void) => {
8 | useEffect(() => {
9 | const handleKeyDown = (e: KeyboardEvent) => {
10 | if ((e.ctrlKey || e.metaKey) && e.key?.toLowerCase() === 's') {
11 | e.preventDefault();
12 | if (onSave) onSave();
13 | }
14 | };
15 | window.addEventListener('keydown', handleKeyDown);
16 | return () => {
17 | window.removeEventListener('keydown', handleKeyDown);
18 | };
19 | }, [onSave]);
20 | };
21 |
22 | export default useDisableSaveShortcut;
23 |
--------------------------------------------------------------------------------
/src/pages/Antv-X6/components/NewSkill/SettingModal.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/color';
2 | @import '@/styles/token';
3 |
4 | .modal-container {
5 | width: 760px !important;
6 | }
7 |
8 | .container {
9 | height: 650px;
10 | border-radius: 10px;
11 | background: #fff;
12 | pointer-events: auto;
13 |
14 | .left {
15 | padding-left: 12px;
16 | padding-top: 12px;
17 |
18 | h3 {
19 | font-size: 22px;
20 | font-weight: @fontWeightStrong;
21 | color: @BLANK04;
22 | line-height: 2;
23 | }
24 | }
25 |
26 | .right {
27 | padding: 0;
28 | }
29 |
30 | .close {
31 | position: absolute;
32 | right: 20px;
33 | top: 20px;
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/src/utils/model.ts:
--------------------------------------------------------------------------------
1 | import type {
2 | GroupModelItem,
3 | ModelListItemProps,
4 | } from '@/types/interfaces/model';
5 | // 根据apiProtocol将模型重组为二维数组
6 | export const groupModelsByApiProtocol = (
7 | models: ModelListItemProps[],
8 | ): GroupModelItem[] => {
9 | const grouped: GroupModelItem[] = [
10 | { label: 'OpenAI', options: [] },
11 | { label: 'Ollama', options: [] },
12 | ];
13 |
14 | // 将模型分配到对应的分组
15 | models.forEach((model) => {
16 | const targetGroup = grouped.find(
17 | (group) => group.label === model.apiProtocol,
18 | );
19 | if (targetGroup) {
20 | targetGroup.options.push(model);
21 | }
22 | });
23 |
24 | return grouped;
25 | };
26 |
--------------------------------------------------------------------------------
/src/components/base/McpInstallType/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/token.less';
2 |
3 | .container {
4 | height: 24px;
5 | padding: 0 8px;
6 | border-radius: 4px;
7 | font-size: @fontSizeSm;
8 | font-weight: @fontWeightStrong;
9 |
10 | &.npx {
11 | color: #a84a00;
12 | background-color: #fff8ea;
13 | }
14 |
15 | &.uvx {
16 | color: #871e9e;
17 | background-color: #f7e9f7;
18 | }
19 |
20 | &.sse {
21 | color: #25772f;
22 | background-color: #ecf7ec;
23 | }
24 |
25 | &.streamable-http {
26 | color: #5e62c8;
27 | background-color: #e4ebe4;
28 | }
29 |
30 | &.component {
31 | color: #004fb3;
32 | background-color: #eaf5ff;
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/src/pages/EditAgent/ArrangeTitle/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/color';
2 | @import '@/styles/token';
3 |
4 | .edit-header {
5 | height: 32px;
6 | padding: @paddingXs @paddingLg;
7 | border-bottom: @lineWidth solid @colorSplit;
8 | box-sizing: content-box;
9 |
10 | h3 {
11 | font-size: 16px;
12 | //font-weight: @fontWeightStrong;
13 | color: @colorText;
14 | font-weight: 600;
15 | line-height: 24px;
16 | }
17 |
18 | .drop-box {
19 | gap: @marginXs;
20 | color: @colorText;
21 | font-size: 14px;
22 | font-weight: @fontWeightStrong;
23 |
24 | img {
25 | width: 22px;
26 | height: 22px;
27 | border-radius: 2px;
28 | }
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/src/pages/SpaceDevelop/ApplicationItem/ApplicationHeader/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/color';
2 |
3 | .header {
4 | gap: 12px;
5 |
6 | .info-box {
7 | gap: 6px;
8 | margin-bottom: 4px;
9 |
10 | .title {
11 | line-height: 22px;
12 | font-size: 16px;
13 | color: @BLANK09;
14 | }
15 | }
16 |
17 | .desc {
18 | height: 40px;
19 | line-height: 20px;
20 | font-size: 14px;
21 | color: @GRAY07;
22 | }
23 |
24 | .logo-box {
25 | display: inline-block;
26 | width: 64px;
27 | height: 64px;
28 | border-radius: 10px;
29 |
30 | img {
31 | width: 100%;
32 | height: 100%;
33 | object-fit: cover;
34 | }
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/src/components/EcosystemDetailDrawer/ActivatedIcon.tsx:
--------------------------------------------------------------------------------
1 | import ActivatedImage from '@/assets/ecosystem/activated.png';
2 | import { Image } from 'antd';
3 | import classNames from 'classnames';
4 | import styles from './index.less';
5 | const cx = classNames.bind(styles);
6 |
7 | interface ActivatedIconProps {
8 | size?: number;
9 | }
10 |
11 | // 已启用图标
12 | const ActivatedIcon: React.FC = ({ size = 40 }) => {
13 | return (
14 |
18 |
19 |
20 | );
21 | };
22 |
23 | export default ActivatedIcon;
24 |
--------------------------------------------------------------------------------
/src/components/SiteFooter/index.tsx:
--------------------------------------------------------------------------------
1 | import { SiteFooterProps } from '@/types/interfaces/common';
2 | import classNames from 'classnames';
3 | import React from 'react';
4 | import styles from './index.less';
5 |
6 | const cx = classNames.bind(styles);
7 |
8 | // 页脚
9 | const SiteFooter: React.FC = ({ text }) => {
10 | return (
11 |
21 | );
22 | };
23 |
24 | export default SiteFooter;
25 |
--------------------------------------------------------------------------------
/src/assets/icons/nav/square.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/components/Card/CardThree/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/color';
2 | @import '@/styles/token';
3 |
4 | .container {
5 | padding: 16px 20px;
6 | border-bottom: 1px solid @GRAY08;
7 |
8 | &:last-child {
9 | border-bottom: none;
10 | }
11 |
12 | h3 {
13 | color: @BLANK31;
14 | margin-bottom: 6px;
15 | font-size: 16px;
16 | font-weight: @fontWeightStrong;
17 | word-break: break-all;
18 | }
19 |
20 | img {
21 | width: 100%;
22 | height: 100px;
23 | object-fit: cover;
24 | margin-top: 6px;
25 | }
26 |
27 | p {
28 | line-height: 20px;
29 | margin-top: 6px;
30 | color: @GRAY05;
31 | font-size: 14px;
32 | word-break: break-all;
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/src/assets/svg/icon_more.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/hooks/useEcoMarket.ts:
--------------------------------------------------------------------------------
1 | import { apiEcoMarketClientConfigDelete } from '@/services/ecosystem';
2 | import { modalConfirm } from '@/utils/ant-custom';
3 | import { message } from 'antd';
4 |
5 | const useEcoMarket = () => {
6 | // 我的分享 ~ 删除操作
7 | const onDeleteShare = (uid: string, name: string, onSuccess: () => void) => {
8 | modalConfirm('您确定要删除此分享吗?', name || '', async () => {
9 | await apiEcoMarketClientConfigDelete(uid);
10 | message.success('删除成功');
11 | onSuccess();
12 | return new Promise((resolve) => {
13 | setTimeout(resolve, 300);
14 | });
15 | });
16 | };
17 |
18 | return {
19 | onDeleteShare,
20 | };
21 | };
22 |
23 | export default useEcoMarket;
24 |
--------------------------------------------------------------------------------
/src/pages/EditAgent/PreviewAndDebug/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/color';
2 | @import '@/styles/token';
3 |
4 | .container {
5 | flex: 4 1;
6 | min-width: 350px;
7 | border-left: @lineWidth solid @colorSplit;
8 |
9 | .loading {
10 | color: @BLUE08;
11 | }
12 |
13 | .main-content {
14 | gap: 20px;
15 | padding: 20px;
16 |
17 | .opening-chat-msg {
18 | line-height: 26px;
19 | font-size: 14px;
20 | text-align: center;
21 | }
22 |
23 | .chat-wrapper {
24 | margin: 0 auto;
25 | width: 100%;
26 | max-width: 800px;
27 | padding-bottom: 30px;
28 | mask: linear-gradient(180deg, @WHITE 91.89%, hsla(0deg, 0%, 100%, 0%));
29 | }
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/src/pages/SpaceMcpEdit/McpEditItem/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/color.less';
2 |
3 | .container {
4 | width: 100%;
5 | padding: 15px 24px;
6 | border-radius: 10px;
7 | background: @WHITE;
8 |
9 | .name {
10 | font-size: 14px;
11 | color: @BLANK17;
12 | }
13 |
14 | .desc {
15 | font-size: 14px;
16 | line-height: 22px;
17 | color: @GRAY05;
18 | word-break: break-all;
19 | }
20 |
21 | .btn {
22 | background-color: @WHITE13;
23 | color: @BLUE05;
24 | border-color: @GRAY30;
25 |
26 | &:hover {
27 | background-color: @WHITE13 !important;
28 | border-color: transparent !important;
29 | color: @BLUE05;
30 | opacity: 0.8;
31 | }
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/src/layouts/Setting/ThemeSwitchPanel.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/token';
2 |
3 | .container {
4 | width: 100%;
5 | height: 100%;
6 | display: flex;
7 | flex: 1;
8 | flex-direction: column;
9 | }
10 |
11 | .title {
12 | font-weight: @fontWeightStrong;
13 | font-size: 22px;
14 | padding: @paddingLg;
15 | border-bottom: @lineWidth solid @colorSplit;
16 | color: @colorText;
17 | box-sizing: border-box;
18 | }
19 |
20 | .content {
21 | flex: 1;
22 | padding: @paddingLg;
23 |
24 | .configContainer {
25 | margin-bottom: @paddingXl;
26 | }
27 |
28 | .configItem {
29 | margin-bottom: @paddingMd;
30 | padding: 0;
31 |
32 | &:last-child {
33 | margin-bottom: 0;
34 | }
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/src/pages/Home/DraggableHomeContent/types.ts:
--------------------------------------------------------------------------------
1 | import type {
2 | CategoryItemInfo,
3 | HomeAgentCategoryInfo,
4 | } from '@/types/interfaces/agentConfig';
5 |
6 | export interface DragResult {
7 | destination: {
8 | droppableId: string;
9 | index: number;
10 | } | null;
11 | source: {
12 | droppableId: string;
13 | index: number;
14 | };
15 | type: 'CATEGORY' | 'AGENT';
16 | }
17 |
18 | export interface DraggableHomeContentProps {
19 | homeCategoryInfo: HomeAgentCategoryInfo;
20 | activeTab?: string;
21 | onTabClick: (type: string) => void;
22 | onAgentClick: (targetId: number) => void;
23 | onToggleCollect: (type: string, info: CategoryItemInfo) => void;
24 | onDataUpdate: () => void;
25 | }
26 |
--------------------------------------------------------------------------------
/src/components/Card/CardThree/index.tsx:
--------------------------------------------------------------------------------
1 | import { CardChildProps } from '@/types/interfaces/cardInfo';
2 | import classNames from 'classnames';
3 | import React from 'react';
4 | import styles from './index.less';
5 |
6 | const cx = classNames.bind(styles);
7 |
8 | /**
9 | * 卡片三
10 | */
11 | const CardThree: React.FC = ({
12 | className,
13 | title,
14 | content,
15 | onClick,
16 | }) => {
17 | return (
18 |
22 |
{title}
23 |
{content}
24 |
25 | );
26 | };
27 |
28 | export default CardThree;
29 |
--------------------------------------------------------------------------------
/src/assets/icons/design/opacity.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/pages/SpaceLibrary/CreateModel/IntranetServerCommand/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/color';
2 |
3 | .container {
4 | width: 560px;
5 | border-radius: 10px !important;
6 | background-color: @WHITE12 !important;
7 |
8 | .header {
9 | background-color: @WHITE12 !important;
10 | }
11 |
12 | .body {
13 | padding-top: 36px !important;
14 | }
15 |
16 | .sub-title {
17 | font-size: 14px;
18 | color: @BLUE02;
19 | }
20 |
21 | .box {
22 | line-height: 22px;
23 | padding: 10px 8px;
24 | margin: 10px 0 20px;
25 | color: @GRAY07;
26 | font-size: 12px;
27 | border-radius: 5px;
28 | background: @WHITE;
29 | box-sizing: border-box;
30 | border: 1px solid @WHITE15;
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/src/components/Card/CardOne/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/color';
2 | @import '@/styles/token';
3 |
4 | .container {
5 | padding: 16px 20px;
6 | border-bottom: 1px solid @GRAY08;
7 |
8 | &:last-child {
9 | border-bottom: none;
10 | }
11 |
12 | img {
13 | width: 60px;
14 | height: 60px;
15 | object-fit: cover;
16 | }
17 |
18 | .box {
19 | margin-left: 10px;
20 |
21 | h3 {
22 | color: @BLANK31;
23 | margin-bottom: 6px;
24 | font-size: 16px;
25 | font-weight: @fontWeightStrong;
26 | word-break: break-all;
27 | }
28 |
29 | p {
30 | line-height: 20px;
31 | color: @GRAY05;
32 | font-size: 14px;
33 | word-break: break-all;
34 | }
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/src/components/ModelSetting/type.ts:
--------------------------------------------------------------------------------
1 | import type { ModelListItemProps } from '@/types/interfaces/model';
2 | import { NodeConfig } from '@/types/interfaces/node';
3 | import type { FormInstance } from 'antd';
4 | // type.ts 或 types/index.ts
5 | interface GroupModelItem {
6 | // 分组的名称
7 | label: string;
8 | options: ModelListItemProps[];
9 | }
10 |
11 | export interface GroupModel {
12 | label: string;
13 | options: ModelListItemProps[];
14 | }
15 |
16 | // 定义分组的模型列表
17 | export interface GroupModelListItemProps {
18 | onChange: (value: NodeConfig) => void;
19 | nodeConfig: NodeConfig;
20 | groupedOptionsData?: GroupModelItem[];
21 | }
22 |
23 | export interface ModelSettingProp {
24 | form: FormInstance;
25 | modelConfig?: any;
26 | }
27 |
--------------------------------------------------------------------------------
/src/components/base/AgentType/images/icon_knowledge.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/components/custom/Loading/index.tsx:
--------------------------------------------------------------------------------
1 | import { LoadingOutlined } from '@ant-design/icons';
2 | import classNames from 'classnames';
3 | import React from 'react';
4 | import styles from './index.less';
5 |
6 | const cx = classNames.bind(styles);
7 |
8 | export interface LoadingProps {
9 | className?: string;
10 | }
11 |
12 | const Loading: React.FC = ({ className }) => {
13 | return (
14 |
24 |
25 | 加载中...
26 |
27 | );
28 | };
29 |
30 | export default Loading;
31 |
--------------------------------------------------------------------------------
/src/pages/SpaceTable/StructureTable/ClearDataTooltip/index.tsx:
--------------------------------------------------------------------------------
1 | import { TableFieldInfo } from '@/types/interfaces/dataTable';
2 | import { Tooltip } from 'antd';
3 | import { PropsWithChildren } from 'react';
4 |
5 | export interface ClearDataTooltipProps {
6 | record: TableFieldInfo;
7 | existTableDataFlag?: boolean;
8 | }
9 |
10 | const ClearDataTooltip: React.FC> = ({
11 | record,
12 | existTableDataFlag,
13 | children,
14 | }) => {
15 | const disabled =
16 | record?.systemFieldFlag || (!record?.isNew && existTableDataFlag);
17 | if (!disabled) {
18 | return children;
19 | }
20 | return {children};
21 | };
22 |
23 | export default ClearDataTooltip;
24 |
--------------------------------------------------------------------------------
/src/assets/icons/common/export.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/constants/codes.constants.ts:
--------------------------------------------------------------------------------
1 | // 修改请求状态码
2 |
3 | class Constant {
4 | //request succeed
5 | static success = '0000';
6 | static warning = 99;
7 | }
8 |
9 | export default Constant;
10 |
11 | export const SUCCESS_CODE = '0000';
12 | // 用户未登录
13 | export const USER_NO_LOGIN = '4010';
14 | // 重定向登录
15 | export const REDIRECT_LOGIN = '4011';
16 | // 智能体不存在或已下架
17 | export const AGENT_NOT_EXIST = '0001';
18 |
19 | /**
20 | * 智能体页面开发聊天服务错误状态码 --start
21 | */
22 |
23 | // 智能体服务运行中的错误状态
24 | export const AGENT_SERVICE_RUNNING = '9010';
25 | // 智能体没有配置默认聊天模型(0001与上面的状态码重复了, 为了语义化清晰, 所以这里单独定义)
26 | export const AGENT_NO_CONFIG_MODEL = '0001';
27 | // 智能体AI聊天错误(普通错误)
28 | export const AGENT_AI_CHAT_ERROR = '9999';
29 |
30 | /**
31 | * 智能体服务错误状态码 --end
32 | */
33 |
--------------------------------------------------------------------------------
/src/types/enums/systemManage.ts:
--------------------------------------------------------------------------------
1 | // 系统管理列表枚举
2 | export enum SystemManageListEnum {
3 | // 用户管理
4 | User_Manage,
5 | // 发布审核
6 | Publish_Audit,
7 | // 已发布管理
8 | Published_Manage,
9 | // 全局模型管理
10 | Global_Model_Manage,
11 | // 系统配置
12 | System_Config,
13 | // 主题配置
14 | Theme_Config,
15 | }
16 |
17 | // 系统管理-用户管理-角色枚举
18 | export enum UserRoleEnum {
19 | Admin = 'Admin',
20 | User = 'User',
21 | }
22 |
23 | // 系统管理-用户管理-状态枚举
24 | export enum UserStatusEnum {
25 | Enabled = 'Enabled',
26 | Disabled = 'Disabled',
27 | }
28 |
29 | // 消息类型, Broadcast时可以不传userIds,可用值:Broadcast,Private,System
30 | export enum MessageScopeEnum {
31 | Broadcast = 'Broadcast', // 广播
32 | Private = 'Private', // 私信
33 | System = 'System', // 系统消息
34 | }
35 |
--------------------------------------------------------------------------------
/src/components/base/AgentType/images.constants.ts:
--------------------------------------------------------------------------------
1 | import { ReactComponent as ICON_AGENT } from './images/icon_agent.svg';
2 | import { ReactComponent as ICON_KNOWLEDGE } from './images/icon_knowledge.svg';
3 | import { ReactComponent as ICON_MODEL } from './images/icon_model.svg';
4 | import { ReactComponent as ICON_PAGE_APP } from './images/icon_page_app.svg';
5 | import { ReactComponent as ICON_PLUGIN } from './images/icon_plugin.svg';
6 | import { ReactComponent as ICON_TABLE } from './images/icon_table.svg';
7 | import { ReactComponent as ICON_WORKFLOW } from './images/icon_workflow.svg';
8 |
9 | export {
10 | // 智能体类型图标
11 | ICON_AGENT,
12 | ICON_KNOWLEDGE,
13 | ICON_MODEL,
14 | ICON_PAGE_APP,
15 | ICON_PLUGIN,
16 | ICON_TABLE,
17 | ICON_WORKFLOW,
18 | };
19 |
--------------------------------------------------------------------------------
/src/components/TiptapVariableInput/index.ts:
--------------------------------------------------------------------------------
1 | /*
2 | * Tiptap Variable Input Component Entry
3 | * Tiptap 变量输入组件入口文件
4 | */
5 |
6 | export { default } from './TiptapVariableInput';
7 | export type {
8 | MentionItem,
9 | TiptapVariableInputProps,
10 | VariableSuggestionItem,
11 | } from './types';
12 |
13 | // 导出扩展(供高级用户使用)
14 | export { HTMLTagProtection } from './extensions/HTMLTagProtection';
15 | export { MentionNode } from './extensions/MentionNode';
16 | export { MentionSuggestion } from './extensions/MentionSuggestion';
17 | export { RawNode } from './extensions/RawNode';
18 | export { ToolBlockNode } from './extensions/ToolBlockNode';
19 | export { VariableNode } from './extensions/VariableNode';
20 | export { VariableSuggestion } from './extensions/VariableSuggestion';
21 |
--------------------------------------------------------------------------------
/src/assets/icons/chat/collected.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/assets/icons/workspace/knowledge.svg:
--------------------------------------------------------------------------------
1 |
11 |
--------------------------------------------------------------------------------
/src/assets/icons/nav/home.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/components/RecommendList/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/color';
2 | @import '@/styles/token';
3 |
4 | .container {
5 | gap: @marginXs;
6 |
7 | .box {
8 | max-width: 100%;
9 | width: fit-content;
10 | line-height: 26px;
11 | padding: @paddingXxs @paddingSm;
12 | font-size: @fontSize;
13 | color: @colorText;
14 | border: @lineWidth solid @colorSplit;
15 | display: flex;
16 | justify-content: center;
17 | align-items: center;
18 | gap: 5px;
19 |
20 | .icon {
21 | width: 16px;
22 | height: 16px;
23 | border-radius: 4px;
24 | display: inline-block;
25 | }
26 | }
27 | }
28 |
29 | /* 当屏幕宽度小于等于 720px 时应用的样式 */
30 | @media screen and (max-width: 720px) {
31 | .container {
32 | padding: 0 @paddingMd;
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/src/models/squareModel.ts:
--------------------------------------------------------------------------------
1 | import type { SquareAgentInfo } from '@/types/interfaces/square';
2 | import { useState } from 'react';
3 |
4 | const useSquareModel = () => {
5 | const [agentInfoList, setAgentInfoList] = useState([]);
6 | const [pluginInfoList, setPluginInfoList] = useState([]);
7 | const [workflowInfoList, setWorkflowInfoList] = useState(
8 | [],
9 | );
10 | const [templateList, setTemplateList] = useState([]);
11 |
12 | return {
13 | agentInfoList,
14 | setAgentInfoList,
15 | pluginInfoList,
16 | setPluginInfoList,
17 | workflowInfoList,
18 | setWorkflowInfoList,
19 | templateList,
20 | setTemplateList,
21 | };
22 | };
23 |
24 | export default useSquareModel;
25 |
--------------------------------------------------------------------------------
/src/pages/SpaceTable/StructureTable/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/color';
2 |
3 | .table-container {
4 | background: @WHITE03;
5 |
6 | .table-row {
7 | background: @WHITE03;
8 | }
9 |
10 | .icon {
11 | font-size: 12px;
12 | color: @BLANK17;
13 | margin-right: 8px;
14 | transform: rotate(-90deg);
15 | transition: transform 0.3s; // 添加过渡效果,使旋转更平滑;
16 |
17 | &.rotate-0 {
18 | transform: rotate(0deg);
19 | }
20 |
21 | &.icon-hidden {
22 | visibility: hidden;
23 | }
24 | }
25 |
26 | :global {
27 | .ant-table-cell-with-append {
28 | display: flex;
29 | align-items: center;
30 | }
31 |
32 | // 覆盖header的背景色
33 | .ant-table-thead > tr > th {
34 | background: @WHITE03 !important;
35 | }
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/src/assets/icons/chat/close_fill.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/assets/icons/common/straw.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/plugins/ds-markdown-mermaid-plugin/index.ts:
--------------------------------------------------------------------------------
1 | import { MermaidBlock, rehypeMermaid } from 'ds-markdown-mermaid-plugin';
2 | import { createBuildInPlugin, mermaidId } from 'ds-markdown/plugins';
3 |
4 | // 移除 useMemo,直接定义配置对象
5 | const mermaidConfig = {
6 | theme: 'default', // 主题:default, neutral, dark, forest
7 | flowchart: {
8 | useMaxWidth: true,
9 | htmlLabels: true,
10 | },
11 | sequence: {
12 | diagramMarginX: 50,
13 | diagramMarginY: 10,
14 | },
15 | suppressErrorRendering: false,
16 | };
17 |
18 | const mermaidPlugin = createBuildInPlugin({
19 | id: mermaidId,
20 | rehypePlugin: [rehypeMermaid, { mermaidConfig }],
21 | components: {
22 | mermaidblock: MermaidBlock,
23 | },
24 | });
25 |
26 | export default mermaidPlugin;
27 | export { mermaidConfig };
28 |
--------------------------------------------------------------------------------
/src/services/event.ts:
--------------------------------------------------------------------------------
1 | import { EventTypeEnum } from '@/types/enums/event';
2 | import { RequestResponse } from '@/types/interfaces/request';
3 | import { request } from 'umi';
4 | interface EventList {
5 | event: object;
6 | type: EventTypeEnum;
7 | }
8 | export interface ApiCollectEventResponse {
9 | hasEvent: boolean;
10 | eventList: EventList[];
11 | version?: string; // 版本号
12 | }
13 | // 轮询获取事件
14 | export async function apiCollectEvent(): Promise<
15 | RequestResponse
16 | > {
17 | return request('/api/notify/event/collect/batch', {
18 | method: 'GET',
19 | });
20 | }
21 |
22 | // 清除事件
23 | export async function apiClearEvent(): Promise> {
24 | return request('/api/notify/event/clear', {
25 | method: 'GET',
26 | });
27 | }
28 |
--------------------------------------------------------------------------------
/src/components/MarkdownCustomProcess/SeeDetailModal.less:
--------------------------------------------------------------------------------
1 | .see-detail-modal {
2 | :global {
3 | .ant-modal-content {
4 | padding: 16px;
5 | }
6 | }
7 |
8 | .see-detail-header {
9 | display: flex;
10 | align-items: center;
11 | justify-content: space-between;
12 | padding-right: 50px;
13 | height: 42px;
14 |
15 | .see-detail-header-title {
16 | flex: 1;
17 | }
18 |
19 | .see-detail-header-actions {
20 | :global {
21 | .ant-btn .ant-btn-icon {
22 | color: rgba(0, 0, 0, 45%);
23 | }
24 |
25 | .ant-btn:hover .ant-btn-icon {
26 | color: rgba(0, 0, 0, 88%);
27 | }
28 | }
29 | }
30 | }
31 |
32 | .see-detail-content {
33 | height: 400px;
34 | overflow: auto;
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/src/hooks/useTexts.ts:
--------------------------------------------------------------------------------
1 | import { getTexts } from '@/utils/locales';
2 | import { useMemo } from 'react';
3 | import { useUnifiedTheme } from './useUnifiedTheme';
4 |
5 | /**
6 | * 多语言文本 Hook
7 | * 根据当前语言设置返回对应的文本内容
8 | *
9 | * @returns 当前语言的文本对象
10 | *
11 | * @example
12 | * ```tsx
13 | * const MyComponent = () => {
14 | * const texts = useTexts();
15 | *
16 | * return (
17 | *
18 | *
{texts.title}
19 | *
20 | *
21 | * );
22 | * };
23 | * ```
24 | */
25 | export const useTexts = () => {
26 | const { data } = useUnifiedTheme();
27 |
28 | const texts = useMemo(() => {
29 | return getTexts(data.language);
30 | }, [data.language]);
31 |
32 | return texts;
33 | };
34 |
35 | export default useTexts;
36 |
--------------------------------------------------------------------------------
/src/layouts/MobileMenu.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/token';
2 |
3 | .mobileMenuBtn {
4 | position: fixed;
5 | top: 10px;
6 | // left 位置现在通过内联样式动态设置
7 | z-index: 1000;
8 | transition: margin-left 0.3s;
9 | border-radius: 50%;
10 | border: @lineWidth solid @colorSplit;
11 | width: 20px;
12 | height: 20px;
13 | padding: 4px;
14 | box-sizing: content-box;
15 | display: flex;
16 | align-items: center;
17 | justify-content: center;
18 | background: @colorBgContainer;
19 | color: @colorTextSecondary;
20 | box-shadow: @navShadow;
21 |
22 | &:hover {
23 | background: @navItemHoverBg;
24 | transform: scale(1.1);
25 | }
26 |
27 | &:active {
28 | background: @navItemActiveBg;
29 | }
30 | }
31 |
32 | .mobileMenuMask {
33 | flex: 1;
34 | background: transparent;
35 | }
36 |
--------------------------------------------------------------------------------
/src/components/EcosystemCard/SharedIcon/images/icon_rejected.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/pages/SpaceLog/LogHeader/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/color';
2 | @import '@/styles/token';
3 |
4 | .header {
5 | gap: 16px;
6 | border-bottom: 1px solid @BLANK01;
7 |
8 | .agent-logo {
9 | width: 42px;
10 | height: 42px;
11 | object-fit: cover;
12 | }
13 |
14 | .header-info {
15 | gap: 6px;
16 |
17 | .agent-name {
18 | font-size: 14px;
19 | font-weight: @fontWeightStrong;
20 | color: @BLANK04;
21 | }
22 |
23 | .user-info {
24 | gap: 6px;
25 |
26 | .avatar {
27 | width: 14px;
28 | height: 14px;
29 | border-radius: 50%;
30 | object-fit: cover;
31 | }
32 |
33 | .name {
34 | max-width: 200px;
35 | color: @GRAY05;
36 | font-size: 12px;
37 | }
38 | }
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/src/assets/icons/chat/user.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/assets/icons/nav/user.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/components/CodeEditor/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/color.less';
2 |
3 | .code-editor {
4 | height: 100%;
5 | border-radius: 10px;
6 | overflow: hidden;
7 | margin-bottom: 10px;
8 | }
9 |
10 | // 代码编辑器的样式
11 | .monaco-container {
12 | position: fixed;
13 | right: 384px;
14 | top: 78px;
15 | left: 10px;
16 | bottom: 10px;
17 | background-color: #fff;
18 | z-index: 101;
19 | box-sizing: border-box;
20 | overflow: hidden;
21 | padding: 16px;
22 | border-radius: 15px;
23 | box-shadow: 0 0 5px 0 @BLANK05;
24 |
25 | .monaco-editor-content {
26 | position: absolute;
27 | right: 12px;
28 | top: 60px;
29 | bottom: 12px;
30 | left: 12px;
31 | padding: 12px 0;
32 | background-color: #1e1e1e;
33 | border-radius: 12px;
34 | overflow: hidden;
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/src/components/FormListItem/components/TreeColumnHeader.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | /**
4 | * 树列头组件的Props接口
5 | */
6 | interface TreeColumnHeaderProps {
7 | /** 是否显示必填复选框 */
8 | showCheck?: boolean;
9 | /** 是否为body类型 */
10 | isBody?: boolean;
11 | }
12 |
13 | /**
14 | * 树列头组件
15 | * 负责渲染树的列标题,包括变量名、变量类型等
16 | */
17 | const TreeColumnHeader: React.FC = ({
18 | showCheck,
19 | isBody,
20 | }) => {
21 | return (
22 |
23 | 变量名
24 |
29 | 变量类型
30 |
31 |
32 | );
33 | };
34 |
35 | export default TreeColumnHeader;
36 |
--------------------------------------------------------------------------------
/src/types/enums/plugin.ts:
--------------------------------------------------------------------------------
1 | // 发布范围,Space 空间;Tenant 租户全局;Global 系统全局。目前UI上的"全局"指的是租户全局,可用值:Space,Tenant,Global
2 | export enum PluginPublishScopeEnum {
3 | Space = 'Space',
4 | Tenant = 'Tenant',
5 | Global = 'Global',
6 | }
7 |
8 | // 插件类型,可用值:HTTP,CODE
9 | export enum PluginTypeEnum {
10 | HTTP = 'HTTP',
11 | CODE = 'CODE',
12 | }
13 |
14 | // 插件代码语言,可用值:Python,JavaScript
15 | export enum CodeLangEnum {
16 | Python = 'Python',
17 | JavaScript = 'JavaScript',
18 | JSON = 'JSON',
19 | Text = 'Text',
20 | }
21 |
22 | // 插件Code模式
23 | export enum PluginCodeModeEnum {
24 | // 元数据
25 | Metadata = 'Metadata',
26 | // 代码
27 | Code = 'Code',
28 | }
29 |
30 | // 卡片绑定样式,可用值:SINGLE,LIST
31 | export enum BindCardStyleEnum {
32 | // 单张卡片
33 | SINGLE = 'SINGLE',
34 | // 竖向列表
35 | LIST = 'LIST',
36 | }
37 |
--------------------------------------------------------------------------------
/src/assets/svg/icon_star_fill.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/assets/icons/nav/workspace.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/pages/EditAgent/AgentArrangeConfig/ConfigOptionsHeader/index.tsx:
--------------------------------------------------------------------------------
1 | import type { ConfigOptionsHeaderProps } from '@/types/interfaces/space';
2 | import classNames from 'classnames';
3 | import React, { PropsWithChildren } from 'react';
4 | import styles from './index.less';
5 |
6 | const cx = classNames.bind(styles);
7 |
8 | /**
9 | * 智能体配置项header
10 | */
11 | const ConfigOptionsHeader: React.FC<
12 | PropsWithChildren
13 | > = ({ children, title }) => {
14 | return (
15 |
23 |
{title}
24 | {children}
25 |
26 | );
27 | };
28 |
29 | export default ConfigOptionsHeader;
30 |
--------------------------------------------------------------------------------
/src/components/AgentSidebar/StatisticsInfo/index.tsx:
--------------------------------------------------------------------------------
1 | import SvgIcon from '@/components/base/SvgIcon';
2 | import { StatisticsInfoProps } from '@/types/interfaces/agentTask';
3 | import classNames from 'classnames';
4 | import React from 'react';
5 | import styles from './index.less';
6 |
7 | const cx = classNames.bind(styles);
8 |
9 | // 统计信息
10 | const StatisticsInfo: React.FC = ({
11 | onClose,
12 | visible,
13 | }) => {
14 | return (
15 |
25 | );
26 | };
27 |
28 | export default StatisticsInfo;
29 |
--------------------------------------------------------------------------------
/src/pages/SpaceLibrary/CreateModel/IntranetModel/index.tsx:
--------------------------------------------------------------------------------
1 | import type { IntranetModelProps } from '@/types/interfaces/library';
2 | import { Button } from 'antd';
3 | import classNames from 'classnames';
4 | import React from 'react';
5 | import styles from './index.less';
6 |
7 | const cx = classNames.bind(styles);
8 |
9 | /**
10 | * 内网模型
11 | */
12 | const IntranetModel: React.FC = ({ onOpen }) => {
13 | return (
14 |
15 |
16 | 选择“内网模型”可以把你局域网内的模型通过配置暴露给平台使用,你只需要在内网服务器执行一行命令,即可在下面的接口配置URL中配置你的内网地址
17 |
18 |
19 |
当前状态为离线
20 |
21 |
22 | );
23 | };
24 |
25 | export default IntranetModel;
26 |
--------------------------------------------------------------------------------
/src/utils/debounce.ts:
--------------------------------------------------------------------------------
1 | // debounce
2 | export const debounce = (
3 | fn: (...args: T) => void,
4 | delay = 2000,
5 | ) => {
6 | let timer: NodeJS.Timeout | null = null;
7 | return (...args: T) => {
8 | // 使用箭头函数
9 | if (timer) {
10 | clearTimeout(timer);
11 | }
12 | timer = setTimeout(() => {
13 | fn(...args); // 箭头函数中不需要 apply
14 | timer = null;
15 | }, delay);
16 | };
17 | };
18 |
19 | // throttle
20 | export const throttle = (
21 | fn: (...args: T) => void,
22 | delay = 2000,
23 | ) => {
24 | let timer: NodeJS.Timeout | null = null;
25 | return (...args: T) => {
26 | // 使用箭头函数
27 | if (timer) return;
28 | timer = setTimeout(() => {
29 | fn(...args); // 箭头函数中不需要 apply
30 | timer = null;
31 | }, delay);
32 | };
33 | };
34 |
--------------------------------------------------------------------------------
/src/components/UploadAvatar/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/color';
2 | @import '@/styles/token';
3 |
4 | .file-box {
5 | display: flex;
6 | justify-content: center;
7 | align-items: center;
8 | width: 64px;
9 | height: 64px;
10 | border-radius: 10px;
11 | background-color: @colorFillTertiary;
12 |
13 | &:hover {
14 | .mask {
15 | opacity: 1;
16 | z-index: 1;
17 | }
18 | }
19 |
20 | .mask {
21 | position: absolute;
22 | top: 0;
23 | left: 0;
24 | right: 0;
25 | bottom: 0;
26 | background-color: rgba(22, 22, 26, 30%);
27 | color: @WHITE;
28 | font-size: 20px;
29 | transition: opacity 0.3s, z-index 0.2s;
30 | z-index: -1;
31 | opacity: 0;
32 | }
33 |
34 | .image {
35 | width: auto;
36 | height: 100%;
37 | object-fit: contain;
38 | max-width: 100%;
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/src/pages/Login/SiteProtocol/index.tsx:
--------------------------------------------------------------------------------
1 | import classNames from 'classnames';
2 | import React from 'react';
3 | import styles from './index.less';
4 |
5 | const cx = classNames.bind(styles);
6 |
7 | const SiteProtocol: React.FC = () => {
8 | return (
9 | <>
10 | 已阅读并同意协议:
11 |
17 | 服务使用协议
18 |
19 | 、
20 |
26 | 隐私协议
27 |
28 | >
29 | );
30 | };
31 |
32 | export default SiteProtocol;
33 |
--------------------------------------------------------------------------------
/src/layouts/Setting/SettingAccount/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/color';
2 | @import '@/styles/token';
3 |
4 | .container {
5 | padding: 24px;
6 |
7 | h3 {
8 | margin-bottom: 30px;
9 | font-size: 22px;
10 | font-weight: @fontWeightStrong;
11 | color: @BLANK04;
12 | }
13 |
14 | .avatar {
15 | width: 70px;
16 | height: 70px;
17 | margin-bottom: 60px;
18 | border-radius: 50%;
19 | }
20 |
21 | .input {
22 | width: 240px;
23 | margin-right: 30px;
24 | }
25 |
26 | .name {
27 | margin-bottom: 12px;
28 | font-size: 14px;
29 | font-weight: @fontWeightStrong;
30 | color: @BLANK04;
31 | }
32 |
33 | .text {
34 | font-size: 14px;
35 | line-height: 22px;
36 | color: #3d3d3d;
37 |
38 | &.phone {
39 | display: inline-block;
40 | margin-bottom: 40px;
41 | }
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/src/components/ChatInputHome/ManualComponentItem/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/color';
2 | @import '@/styles/token';
3 |
4 | .manual-container {
5 | gap: @marginXs;
6 | width: 100%;
7 |
8 | .manual-box {
9 | padding: @paddingXxs @paddingXs;
10 | border-radius: @borderRadius;
11 | box-sizing: border-box;
12 | color: @colorTextSecondary;
13 | font-size: @fontSizeSm;
14 | transition: background-color ease-in-out 0.3s;
15 | word-wrap: normal;
16 | white-space: nowrap;
17 | border: @lineWidth solid @colorSplit;
18 |
19 | .svg-icon {
20 | color: @colorTextSecondary;
21 | }
22 |
23 | &:hover {
24 | background-color: @colorPrimaryBg;
25 | }
26 |
27 | &.active {
28 | color: @colorPrimary;
29 | font-weight: @fontWeightStrong;
30 | background-color: @colorPrimaryBg;
31 | }
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/src/layouts/Message/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/color';
2 |
3 | .container {
4 | position: absolute;
5 | left: 70px !important;
6 |
7 | .segment {
8 | width: 50%;
9 | }
10 |
11 | .del-disabled {
12 | color: @GRAY04;
13 | }
14 | }
15 |
16 | .message-list {
17 | width: 500px;
18 | height: 500px;
19 |
20 | :global {
21 | .ds-markdown {
22 | --ds-font-size-m: 12px;
23 | --ds-font-size-xsp: 11px;
24 | --ds-line-height-m: 22px;
25 | // --ds-transition-duration: 0.2s;
26 | // --ds-ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);
27 | // --ds-rgba-transparent: 255 255 255 / 0;
28 | // --ds-rgb-link: var(--ds-rgb-primary);
29 | // --ds-input-height-l: 44px;
30 | // --ds-input-height-m: 34px;
31 | // --ds-input-height-s: 30px;
32 | // --ds-input-height-xs: 26px;
33 | }
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/src/models/applicationDev.ts:
--------------------------------------------------------------------------------
1 | import { AgentConfigInfo } from '@/types/interfaces/agent';
2 | import cloneDeep from 'lodash/cloneDeep';
3 | import { useCallback, useRef, useState } from 'react';
4 |
5 | export default () => {
6 | // 智能体列表
7 | const [agentList, setAgentList] = useState([]);
8 | // 所有智能体列表
9 | const agentAllRef = useRef([]);
10 |
11 | // 收藏与取消收藏
12 | const handlerCollect = useCallback(
13 | (index: number, isCollect: boolean) => {
14 | const _agentList = cloneDeep(agentList);
15 | _agentList[index].devCollected = isCollect;
16 | setAgentList(_agentList);
17 | agentAllRef.current[index].devCollected = isCollect;
18 | },
19 | [agentList],
20 | );
21 |
22 | return {
23 | agentList,
24 | setAgentList,
25 | agentAllRef,
26 | handlerCollect,
27 | };
28 | };
29 |
--------------------------------------------------------------------------------
/src/pages/SpaceDevelop/AnalyzeStatistics/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/color';
2 |
3 | .analyze-wrapper {
4 | position: relative;
5 | gap: 20px;
6 |
7 | .analyze-box {
8 | width: calc(50% - 10px);
9 |
10 | span {
11 | line-height: 50px;
12 | padding-left: 16px;
13 | font-size: 14px;
14 | color: @GRAY05;
15 | }
16 |
17 | div {
18 | height: 80px;
19 | font-size: 24px;
20 | color: @BLANK04;
21 | }
22 | }
23 |
24 | .row-line {
25 | position: absolute;
26 | top: 140px;
27 | left: 5px;
28 | width: calc(100% - 10px);
29 | height: 1px;
30 | background-color: @GRAY06;
31 | }
32 |
33 | .vertical-line {
34 | position: absolute;
35 | left: calc(50%);
36 | top: 5px;
37 | width: 1px;
38 | height: calc(100% - 10px);
39 | background-color: @GRAY06;
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/src/layouts/MenusLayout/User/UserAction/index.tsx:
--------------------------------------------------------------------------------
1 | import type { UserActionItemType } from '@/types/interfaces/layouts';
2 | import classNames from 'classnames';
3 | import React from 'react';
4 | import styles from './index.less';
5 |
6 | const cx = classNames.bind(styles);
7 |
8 | /**
9 | * 用户操作选项
10 | */
11 | const UserActionItem: React.FC = ({
12 | className,
13 | onClick,
14 | type,
15 | icon,
16 | text,
17 | }) => {
18 | return (
19 | onClick(type)}
29 | >
30 | {icon}
31 | {text}
32 |
33 | );
34 | };
35 |
36 | export default UserActionItem;
37 |
--------------------------------------------------------------------------------
/src/components/MoveCopyComponent/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/color';
2 | @import '@/styles/token';
3 |
4 | .modal-container {
5 | width: 475px;
6 | height: 60%;
7 | overflow: hidden;
8 |
9 | .modal-body {
10 | max-height: calc(100vh - 180px);
11 | overflow-y: auto;
12 | }
13 | }
14 |
15 | .header {
16 | width: 330px;
17 | }
18 |
19 | .row-line {
20 | height: 2px;
21 | margin: 20px 0;
22 | background-color: @GRAY04;
23 | }
24 |
25 | .label {
26 | display: inline-block;
27 | font-weight: @fontWeightStrong;
28 | }
29 |
30 | .box {
31 | height: 40px;
32 | margin: 5px 0 16px;
33 | padding: 0 10px;
34 | gap: 10px;
35 | border-radius: 6px;
36 | background-color: @WHITE08;
37 |
38 | .img {
39 | width: 20px;
40 | height: 20px;
41 | border-radius: 50%;
42 | }
43 |
44 | .selected-ico {
45 | color: @GRAY07;
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/src/pages/SpaceKnowledge/DocWrap/DocItem/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/color';
2 |
3 | .file-info {
4 | height: 40px;
5 | padding: 0 10px;
6 | gap: 6px;
7 | margin-bottom: 4px;
8 | color: @BLANK04;
9 | font-size: 14px;
10 | transition: background-color 0.3s;
11 | cursor: default;
12 |
13 | &:hover {
14 | background-color: @GRAY01;
15 | }
16 |
17 | &:last-child {
18 | margin-bottom: 0;
19 | }
20 |
21 | &.active {
22 | background-color: @GRAY01;
23 | }
24 |
25 | .analyzing {
26 | color: @WHITE03;
27 | font-size: 12px;
28 | display: inline-block;
29 | padding: 4px 6px;
30 | background-color: @YELLOW01;
31 | border-radius: 4px;
32 | transform: scale(0.95);
33 |
34 | &.analyzing-success {
35 | background-color: @GREEN;
36 | }
37 | }
38 |
39 | .retry-btn {
40 | font-size: 12px;
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/src/pages/EditAgent/SystemTipsWord/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/color';
2 | @import '@/styles/token';
3 |
4 | .container {
5 | padding: @paddingXs @padding;
6 | border-left: @lineWidth solid @colorSplit;
7 | width: 50%;
8 | //隐藏滚动条
9 | &::-webkit-scrollbar {
10 | display: none;
11 | }
12 | }
13 |
14 | .system-tips-wrapper {
15 | padding: @paddingXs;
16 | }
17 |
18 | .system-tips {
19 | font-size: @fontSize;
20 | line-height: @lineHeight;
21 | color: @colorTextSecondary;
22 | }
23 |
24 | .optimize-btn {
25 | color: @colorText; /* 修改文本颜色 */
26 | padding: 6px @paddingSm;
27 | line-height: 16px;
28 | height: 16px;
29 | box-sizing: content-box;
30 | font-size: @fontSize;
31 | gap: @paddingXxs;
32 | }
33 |
34 | .text-area {
35 | padding-left: 0;
36 | padding-right: 0;
37 | //隐藏滚动条
38 | &::-webkit-scrollbar {
39 | display: none;
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/src/assets/icons/design/overline.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/components/base/AgentType/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/token.less';
2 |
3 | .container {
4 | height: 24px;
5 | padding: 0 8px;
6 | border-radius: 4px;
7 | gap: 4px;
8 | font-size: @fontSizeSm;
9 | font-weight: @fontWeightStrong;
10 |
11 | &.agent {
12 | color: #a84a00;
13 | background-color: #fff8ea;
14 | }
15 |
16 | &.plugin {
17 | color: #a84a00;
18 | background-color: #fff8ea;
19 | }
20 |
21 | &.workflow {
22 | color: #25772f;
23 | background-color: #ecf7ec;
24 | }
25 |
26 | &.knowledge {
27 | color: #b2140c;
28 | background-color: #fef2ed;
29 | }
30 |
31 | &.table {
32 | color: #004fb3;
33 | background-color: #eaf5ff;
34 | }
35 |
36 | &.model {
37 | color: #871e9e;
38 | background-color: #f7e9f7;
39 | }
40 |
41 | &.page {
42 | color: #ad0e05;
43 | background-color: #fff2ed;
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/src/components/base/McpStatus/images/icon_initialization.svg:
--------------------------------------------------------------------------------
1 |
11 |
--------------------------------------------------------------------------------
/src/components/base/SecondMenuItem/SubItem.tsx:
--------------------------------------------------------------------------------
1 | import classNames from 'classnames';
2 | import React from 'react';
3 | import MenuListItem from '../MenuListItem';
4 | import styles from './index.less';
5 |
6 | const cx = classNames.bind(styles);
7 |
8 | // 二级菜单项下级组件
9 | interface SubItemProps {
10 | icon?: React.ReactNode | string;
11 | isFirst?: boolean;
12 | name: string;
13 | isActive?: boolean;
14 | onClick: () => void;
15 | }
16 |
17 | // 二级菜单项下级组件
18 | const SubItem: React.FC = ({
19 | icon,
20 | name,
21 | isActive = false,
22 | isFirst = false,
23 | onClick,
24 | }) => {
25 | return (
26 |
34 | );
35 | };
36 |
37 | export default SubItem;
38 |
--------------------------------------------------------------------------------
/src/components/ParamsNameLabel/index.tsx:
--------------------------------------------------------------------------------
1 | import ConditionRender from '@/components/ConditionRender';
2 | import type { ParamsNameLabelProps } from '@/types/interfaces/common';
3 | import classNames from 'classnames';
4 | import React from 'react';
5 | import styles from './index.less';
6 |
7 | const cx = classNames.bind(styles);
8 |
9 | /**
10 | * 试运行表格 - 参数名称label
11 | */
12 | const ParamsNameLabel: React.FC = ({
13 | require,
14 | paramName,
15 | paramType,
16 | }) => {
17 | return (
18 |
19 | {paramName}
20 |
21 | *
22 |
23 | {paramType}
24 |
25 | );
26 | };
27 |
28 | export default ParamsNameLabel;
29 |
--------------------------------------------------------------------------------
/src/assets/icons/design/tabular_numbers.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/components/base/index.ts:
--------------------------------------------------------------------------------
1 | // 基础组件统一导出
2 | export { default as ActionMenu } from './ActionMenu';
3 | export type { ActionItem, ActionMenuProps } from './ActionMenu';
4 |
5 | export { default as AgentType } from './AgentType';
6 | export { default as AuthorInfo } from './AuthorInfo';
7 | export { default as CopyButton } from './CopyButton';
8 | export { default as CopyIconButton } from './CopyIconButton';
9 | export { default as EcoShareStatus } from './EcoShareStatus';
10 | export { default as HoverScrollbar } from './HoverScrollbar';
11 | export { default as McpInstallType } from './McpInstallType';
12 | export { default as McpStatus } from './McpStatus';
13 | export { default as MenuListItem } from './MenuListItem';
14 | export { default as SecondMenuItem } from './SecondMenuItem';
15 | export { default as SvgIcon } from './SvgIcon';
16 | export { default as SvgIconGoodTheme } from './SvgIconGoodTheme';
17 |
--------------------------------------------------------------------------------
/src/pages/EditAgent/AgentArrangeConfig/ComponentSettingModal/AsyncRun/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/color';
2 | @import '@/styles/token';
3 |
4 | .container {
5 | padding: 50px 24px 24px;
6 | font-size: 14px;
7 | background-color: @WHITE04;
8 |
9 | .header {
10 | margin-bottom: 4px;
11 | color: @BLANK11;
12 | font-weight: @fontWeightStrong;
13 | }
14 |
15 | .desc {
16 | color: @BLANK13;
17 | }
18 |
19 | .reply-content {
20 | margin: 12px 0;
21 | color: @BLANK11;
22 | font-weight: @fontWeightStrong;
23 |
24 | .textarea {
25 | color: rgba(56, 55, 67, 100%);
26 | }
27 | }
28 |
29 | .tips {
30 | color: @RED01;
31 | font-size: 12px;
32 | }
33 |
34 | .footer {
35 | text-align: right;
36 |
37 | .btn-disabled {
38 | border-color: transparent;
39 | color: @WHITE;
40 | background: @BLUE12;
41 | }
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/src/styles/teamSetting.less:
--------------------------------------------------------------------------------
1 | .team-setting-container {
2 | width: 100%;
3 | height: 100%;
4 | padding: 26px 26px 21px 22px;
5 | background-color: #f3f5fa;
6 | }
7 |
8 | .team-summary-info {
9 | margin-bottom: 15px;
10 |
11 | img {
12 | width: 50px;
13 | height: 50px;
14 | border-radius: 10px;
15 | margin-right: 15px;
16 | }
17 |
18 | h1 {
19 | margin-bottom: 10px;
20 | }
21 | }
22 |
23 | .team-setting-modal-description {
24 | margin: 25px 0;
25 | }
26 |
27 | .team-setting-modal-warning {
28 | color: red;
29 | background-color: #f6f4dd;
30 | text-align: center;
31 | padding: 10px 0;
32 | border-radius: 10px;
33 | }
34 |
35 | .add-member-modal-content {
36 | width: 600px;
37 | }
38 |
39 | .add-member-left-column {
40 | padding-right: 15px;
41 | border-right: 1px solid #ddd;
42 | }
43 |
44 | .selected-member-list {
45 | border-bottom: none;
46 | }
47 |
--------------------------------------------------------------------------------
/src/pages/EditAgent/AgentArrangeConfig/OpenRemarksEdit/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/color';
2 |
3 | .header-title {
4 | margin-bottom: 8px;
5 | color: @BLANK13;
6 | font-size: 12px;
7 | }
8 |
9 | .title-box {
10 | height: 26px;
11 | margin-top: 10px;
12 | margin-bottom: 4px;
13 |
14 | .title {
15 | color: @BLANK13;
16 | font-size: 12px;
17 | }
18 | }
19 |
20 | .content-box {
21 | border-radius: 4px;
22 |
23 | .custom-style-editor {
24 | border-width: 0.5px;
25 | min-height: 200px;
26 | max-height: 400px;
27 | }
28 | }
29 |
30 | .input {
31 | margin-bottom: 10px;
32 |
33 | &:last-child {
34 | margin-bottom: 0;
35 | }
36 | }
37 |
38 | .icon-input-prefix {
39 | width: 16px;
40 | height: 16px;
41 | object-fit: cover;
42 | border-radius: 4px;
43 | overflow: hidden;
44 | }
45 |
46 | .icon-input-suffix {
47 | margin-inline-end: 0 !important;
48 | }
49 |
--------------------------------------------------------------------------------
/src/assets/icons/chat/network.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/components/TiptapVariableInput/hooks/useMentionItems.ts:
--------------------------------------------------------------------------------
1 | /*
2 | * useMentionItems Hook
3 | * Mentions 数据管理 Hook
4 | */
5 |
6 | import { useMemo } from 'react';
7 | import type { MentionItem } from '../types';
8 |
9 | /**
10 | * Mentions 数据管理 Hook
11 | * @param mentions Mentions 数据列表
12 | * @param query 搜索查询文本
13 | * @returns 过滤后的 Mentions 列表
14 | */
15 | export const useMentionItems = (
16 | mentions: MentionItem[] = [],
17 | query: string = '',
18 | ): MentionItem[] => {
19 | return useMemo(() => {
20 | if (!query.trim()) {
21 | return mentions;
22 | }
23 |
24 | const queryLower = query.toLowerCase();
25 | return mentions.filter((item) => {
26 | const labelLower = item.label.toLowerCase();
27 | const idLower = item.id.toLowerCase();
28 | return labelLower.includes(queryLower) || idLower.includes(queryLower);
29 | });
30 | }, [mentions, query]);
31 | };
32 |
--------------------------------------------------------------------------------
/src/pages/EditAgent/AgentArrangeConfig/ComponentSettingModal/ExceptionHanding/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/color';
2 | @import '@/styles/token';
3 |
4 | .container {
5 | padding: 50px 24px 24px;
6 | font-size: 14px;
7 | background-color: @WHITE04;
8 |
9 | .header {
10 | margin-bottom: 4px;
11 | color: @BLANK11;
12 | font-weight: @fontWeightStrong;
13 | }
14 |
15 | .desc {
16 | color: @BLANK13;
17 | }
18 |
19 | .reply-content {
20 | margin: 12px 0;
21 | color: @BLANK11;
22 | font-weight: @fontWeightStrong;
23 |
24 | .textarea {
25 | color: rgba(56, 55, 67, 100%);
26 | }
27 | }
28 |
29 | .tips {
30 | color: @RED01;
31 | font-size: 12px;
32 | }
33 |
34 | .footer {
35 | text-align: right;
36 |
37 | .btn-disabled {
38 | border-color: transparent;
39 | color: @WHITE;
40 | background: @BLUE12;
41 | }
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/src/assets/icons/nav/ecosystem.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/pages/SpaceTable/TableHeader/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/color';
2 | @import '@/styles/token';
3 |
4 | .database-header {
5 | height: 56px;
6 | //padding: 0 10px;
7 | gap: 12px;
8 | border-bottom: 1px solid @WHITE07;
9 |
10 | .icon-back {
11 | color: @BLANK17;
12 | font-size: 18px;
13 | }
14 |
15 | .logo {
16 | width: 27px;
17 | height: 27px;
18 | border-radius: 5px;
19 | object-fit: cover;
20 | }
21 |
22 | .database-header-title {
23 | gap: 6px;
24 | color: @BLANK04;
25 |
26 | .name {
27 | font-size: 14px;
28 | font-weight: @fontWeightStrong;
29 | }
30 |
31 | .tag-style {
32 | display: inline-block;
33 | padding: 0 5px;
34 | line-height: 18px;
35 | background-color: @BLANK18;
36 | color: @BLANK04;
37 | font-size: 10px;
38 | border-radius: 4px;
39 | //margin-top: 6px;
40 | }
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/src/assets/icons/design/reset.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/chat/close.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/pages/SpaceMcpEdit/McpEditItem/index.tsx:
--------------------------------------------------------------------------------
1 | import { McpEditItemProps } from '@/types/interfaces/mcp';
2 | import { Button } from 'antd';
3 | import classNames from 'classnames';
4 | import React from 'react';
5 | import styles from './index.less';
6 |
7 | const cx = classNames.bind(styles);
8 |
9 | // MCP服务编辑试运行项
10 | const McpEditItem: React.FC = ({
11 | name,
12 | description,
13 | onClick,
14 | }) => {
15 | return (
16 |
17 |
18 | {name}
19 |
22 |
23 |
{description}
24 |
25 | );
26 | };
27 |
28 | export default McpEditItem;
29 |
--------------------------------------------------------------------------------
/src/components/LabelIcon/index.tsx:
--------------------------------------------------------------------------------
1 | import TooltipIcon from '@/components/custom/TooltipIcon';
2 | import { TooltipTitleTypeEnum } from '@/types/enums/common';
3 | import type { LabelIconProps } from '@/types/interfaces/agent';
4 | import { InfoCircleOutlined } from '@ant-design/icons';
5 | import classNames from 'classnames';
6 | import React from 'react';
7 | import styles from './index.less';
8 |
9 | const cx = classNames.bind(styles);
10 |
11 | /**
12 | * 知识库设置label组件
13 | */
14 | const LabelIcon: React.FC = ({
15 | className,
16 | label,
17 | title,
18 | type = TooltipTitleTypeEnum.Blank,
19 | }) => {
20 | return (
21 |
24 | {label}
25 | } type={type} />
26 |
27 | );
28 | };
29 |
30 | export default LabelIcon;
31 |
--------------------------------------------------------------------------------
/src/assets/svg/icon_message.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/pages/SpaceKnowledge/LocalCustomDocModal/CreateSet/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/color';
2 | @import '@/styles/token';
3 |
4 | .set-box {
5 | min-height: 75px;
6 | margin-bottom: 10px;
7 | border-radius: 5px;
8 | background: @WHITE;
9 | border: 1px solid @WHITE14;
10 | transition: border-color 0.3s;
11 |
12 | &.mt-50 {
13 | margin-top: 50px;
14 | }
15 |
16 | &.active {
17 | background: @WHITE06;
18 | border-color: @BLUE02;
19 | }
20 |
21 | h3 {
22 | margin-bottom: 8px;
23 | font-size: 14px;
24 | font-weight: @fontWeightStrong;
25 | color: @BLANK17;
26 | }
27 |
28 | p {
29 | font-size: 12px;
30 | color: @GRAY11;
31 | }
32 |
33 | .custom-set-hide {
34 | display: none;
35 | }
36 |
37 | .divider-horizontal {
38 | height: 1px;
39 | margin: 10px 0;
40 | background-color: @GRAY01;
41 | }
42 |
43 | .mb-10 {
44 | margin-bottom: 10px;
45 | }
46 | }
47 |
--------------------------------------------------------------------------------
/src/pages/SpaceKnowledge/RawSegmentInfo/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/color';
2 |
3 | .header {
4 | gap: 10px;
5 | height: 72px;
6 | padding: 0 30px;
7 | color: @BLANK11;
8 | font-size: 14px;
9 | border-bottom: 1px solid @GRAY01;
10 |
11 | .file-name {
12 | max-width: 60%;
13 | }
14 |
15 | .extra-box {
16 | margin-left: auto;
17 |
18 | .switch-name {
19 | margin-right: 10px;
20 | color: @GRAY05;
21 | }
22 |
23 | .del {
24 | margin-left: 30px;
25 | font-size: 18px;
26 | }
27 | }
28 | }
29 |
30 | .segment-box {
31 | color: @BLANK;
32 | font-size: 14px;
33 | }
34 |
35 | .line {
36 | line-height: 22px;
37 | padding: 8px 10px;
38 | margin-bottom: 8px;
39 | font-size: 14px;
40 | color: @BLANK11;
41 | border: 1px solid @BLANK01;
42 | background-color: @BLANK27;
43 | word-break: break-word;
44 |
45 | &:last-child {
46 | margin-bottom: 0;
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/src/types/enums/menus.ts:
--------------------------------------------------------------------------------
1 | // 菜单栏~tabs切换事件枚举
2 | export enum TabsEnum {
3 | NewChat = 'new_chat',
4 | Home = 'home',
5 | // 工作空间
6 | Space = 'space',
7 | // 广场
8 | Square = 'square',
9 | // 系统管理
10 | System_Manage = 'system_manage',
11 | //课程体系
12 | Course_System = 'course_system',
13 | //生态市场
14 | Ecosystem_Market = 'ecosystem_market',
15 | }
16 |
17 | // 菜单栏,用户操作区域点击事件枚举
18 | export enum UserOperatorAreaEnum {
19 | Document = 'document',
20 | Message = 'message',
21 | }
22 |
23 | // 菜单栏~用户头像操作列表枚举
24 | export enum UserAvatarEnum {
25 | User_Name = 'username',
26 | Setting = 'setting',
27 | Log_Out = 'log_out',
28 | }
29 |
30 | // 消息状态,可用值:All, Unread, Read
31 | export enum MessageReadStatusEnum {
32 | All = 'All',
33 | Unread = 'Unread',
34 | Read = 'Read',
35 | }
36 |
37 | // 设置选项
38 | export enum SettingActionEnum {
39 | Account,
40 | Email_Bind,
41 | Reset_Password,
42 | Theme_Switch,
43 | }
44 |
--------------------------------------------------------------------------------
/src/pages/SpaceMcpCreate/McpHeader/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/color.less';
2 | @import '@/styles/token';
3 |
4 | .header {
5 | height: 56px;
6 | border-bottom: 1px solid @WHITE15;
7 |
8 | .icon {
9 | color: @GRAY10;
10 | font-size: 14px;
11 | margin-right: 4px;
12 | }
13 |
14 | .name {
15 | font-size: 16px;
16 | font-weight: normal;
17 | color: @BLANK04;
18 | }
19 |
20 | .extra-box {
21 | gap: 20px;
22 |
23 | .save-btn {
24 | background-color: @WHITE13;
25 | color: @BLUE05;
26 | border-color: @GRAY30;
27 |
28 | &:hover {
29 | background-color: @WHITE13;
30 | border-color: transparent;
31 | color: @BLUE05;
32 | opacity: 0.8;
33 | }
34 | }
35 | }
36 | }
37 |
38 | @media (max-width: 768px) {
39 | .header {
40 | width: 100%;
41 | overflow-x: auto;
42 |
43 | .extra-box {
44 | gap: 8px;
45 | }
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/src/components/base/AgentType/images/icon_workflow.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/assets/icons/chat/copy.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/components/ToggleWrap/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/color';
2 | @import '@/styles/token';
3 |
4 | .container {
5 | display: flex;
6 | width: 100%;
7 | max-width: 434px;
8 | min-width: 300px;
9 | transition: all 0.3s ease;
10 | border-left: @lineWidth solid @colorSplit;
11 |
12 | &.hidden {
13 | display: none;
14 | width: 0;
15 | overflow: hidden;
16 | }
17 |
18 | .header {
19 | height: 32px;
20 | padding: @paddingXs @paddingLg;
21 | box-sizing: content-box;
22 | border-bottom: @lineWidth solid @colorSplit;
23 |
24 | h3 {
25 | font-size: 16px;
26 | color: @colorText;
27 | white-space: nowrap;
28 | font-weight: 600;
29 | line-height: 24px;
30 | }
31 |
32 | .close {
33 | margin-left: @paddingXs;
34 | font-size: @fontSizeLg;
35 | transition: opacity ease-in-out 0.2s;
36 |
37 | &:hover {
38 | opacity: 0.8;
39 | }
40 | }
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/src/pages/EditAgent/PreviewAndDebug/PreviewAndDebugHeader/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/color';
2 | @import '@/styles/token';
3 |
4 | .container {
5 | height: 32px;
6 | padding: @paddingXs @paddingLg;
7 | box-sizing: content-box;
8 | border-bottom: @lineWidth solid @colorSplit;
9 |
10 | h3 {
11 | font-size: 16px;
12 | //font-weight: @fontWeightStrong;
13 | font-weight: 600;
14 | line-height: 24px;
15 | color: @colorText;
16 | }
17 |
18 | .extra-box {
19 | gap: @marginXs;
20 | color: @colorText;
21 |
22 | .debug {
23 | border: none;
24 | padding: @paddingXs @paddingSm;
25 | font-size: 14px;
26 | line-height: 20px;
27 | font-weight: 400;
28 | height: 24px;
29 | color: @colorText;
30 | gap: @paddingXs;
31 | box-sizing: content-box;
32 |
33 | :global {
34 | .ant-btn-icon {
35 | height: 20px;
36 | }
37 | }
38 | }
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/src/assets/icons/common/delete.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/assets/icons/common/download.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/pages/SpacePluginTool/index.less:
--------------------------------------------------------------------------------
1 | @import '@/styles/color';
2 | @import '@/styles/token';
3 |
4 | .container {
5 | padding: 0 5px;
6 |
7 | .main-container {
8 | flex: 1;
9 | //padding: 16px 20px;
10 | padding: 10px;
11 | margin: 10px 0;
12 |
13 | .title {
14 | font-size: 18px;
15 | font-weight: @fontWeightStrong;
16 | color: @BLANK04;
17 | }
18 |
19 | .request-select {
20 | width: 98px;
21 | margin-right: 16px;
22 | }
23 |
24 | .table-wrap {
25 | border-radius: 5px;
26 | border: 1px solid @BLANK19;
27 |
28 | &.mb-24 {
29 | margin-bottom: 24px;
30 | }
31 |
32 | :global {
33 | .ant-table-tbody > tr > td {
34 | border-bottom: none;
35 | }
36 | }
37 | }
38 |
39 | .select {
40 | width: 120px;
41 | }
42 | }
43 | }
44 |
45 | @media (max-width: 768px) {
46 | .container {
47 | min-width: 900px;
48 | }
49 | }
50 |
--------------------------------------------------------------------------------