Compare commits
1 Commits
feat/knowl
...
docs/new-a
| Author | SHA1 | Date | |
|---|---|---|---|
| d4cf0ca7e7 |
539
.github/CODEOWNERS
vendored
539
.github/CODEOWNERS
vendored
@ -1,273 +1,268 @@
|
|||||||
* @Tecvan-fe @hi-pender @fanlv
|
* Tecvan-fe
|
||||||
|
|
||||||
/frontend/apps/coze-studio/ @Tecvan-fe @evan-crash @duwenhan2byte
|
/apps/coze-studio/ @Tecvan-fe @evan-crash @duwenhan2byte
|
||||||
/frontend/packages/agent-ide/agent-publish/ @Hezi-crypto @duwenhan2byte @catee @evan-crash @haozhenfei @catee
|
/packages/agent-ide/agent-publish/ @Hezi-crypto @duwenhan2byte @catee @evan-crash @haozhenfei @catee
|
||||||
/frontend/packages/agent-ide/commons/ @Hezi-crypto @duwenhan2byte @catee @evan-crash @haozhenfei
|
/packages/agent-ide/commons/ @Hezi-crypto @duwenhan2byte @catee @evan-crash @haozhenfei
|
||||||
/frontend/packages/arch/bot-api/ @Tecvan-fe
|
/packages/arch/bot-api/ @Tecvan-fe
|
||||||
/frontend/packages/arch/bot-http/ @Tecvan-fe
|
/packages/arch/bot-http/ @Tecvan-fe
|
||||||
/frontend/packages/arch/logger/ @Tecvan-fe
|
/packages/arch/logger/ @Tecvan-fe
|
||||||
/frontend/packages/arch/slardar-interface/ @Tecvan-fe @evan-crash
|
/packages/arch/slardar-interface/ @Tecvan-fe @evan-crash
|
||||||
/frontend/config/eslint-config/ @Tecvan-fe @leeight @soonco
|
/config/eslint-config/ @Tecvan-fe @leeight @soonco
|
||||||
/frontend/infra/eslint-plugin/ @Tecvan-fe
|
/infra/eslint-plugin/ @Tecvan-fe
|
||||||
/frontend/config/ts-config/ @leeight @Tecvan-fe
|
/config/ts-config/ @leeight @Tecvan-fe
|
||||||
/frontend/config/vitest-config/ @Tecvan-fe
|
/config/vitest-config/ @Tecvan-fe
|
||||||
/frontend/packages/arch/bot-env/ @Tecvan-fe @leeight
|
/packages/arch/bot-env/ @Tecvan-fe @leeight
|
||||||
/frontend/packages/arch/bot-env-adapter/ @dragooncjw @Tecvan-fe @leeight
|
/packages/arch/bot-env-adapter/ @dragooncjw @Tecvan-fe @leeight
|
||||||
/frontend/packages/arch/bot-typings/ @Tecvan-fe
|
/packages/arch/bot-typings/ @Tecvan-fe
|
||||||
/frontend/packages/arch/web-context/ @Tecvan-fe
|
/packages/arch/web-context/ @Tecvan-fe
|
||||||
/frontend/packages/components/bot-semi/ @Tecvan-fe
|
/packages/components/bot-semi/ @Tecvan-fe
|
||||||
/frontend/packages/components/bot-icons/ @DingGao-Devin
|
/packages/components/bot-icons/ @DingGao-Devin
|
||||||
/frontend/packages/arch/i18n/ @Tecvan-fe @leeight
|
/packages/arch/i18n/ @Tecvan-fe @leeight
|
||||||
/frontend/packages/arch/resources/studio-i18n-resource/ @dragooncjw @Tecvan-fe
|
/packages/arch/resources/studio-i18n-resource/ @dragooncjw @Tecvan-fe
|
||||||
/frontend/config/stylelint-config/ @Tecvan-fe
|
/config/stylelint-config/ @Tecvan-fe
|
||||||
/frontend/packages/arch/idl/ @Tecvan-fe
|
/packages/arch/idl/ @Tecvan-fe
|
||||||
/frontend/infra/utils/fs-enhance/ @Tecvan-fe
|
/infra/utils/fs-enhance/ @Tecvan-fe
|
||||||
/frontend/packages/arch/bot-store/ @Tecvan-fe @catee @duwenhan2byte
|
/packages/arch/bot-store/ @Tecvan-fe @catee @duwenhan2byte
|
||||||
/frontend/packages/arch/bot-error/ @haozhenfei @duwenhan2byte
|
/packages/arch/bot-error/ @haozhenfei @duwenhan2byte
|
||||||
/frontend/packages/foundation/space-store/ @evan-crash @duwenhan2byte
|
/packages/foundation/space-store/ @evan-crash @duwenhan2byte
|
||||||
/frontend/packages/arch/bot-flags/ @Tecvan-fe
|
/packages/arch/bot-flags/ @Tecvan-fe
|
||||||
/frontend/packages/arch/report-events/ @Tecvan-fe
|
/packages/arch/report-events/ @Tecvan-fe
|
||||||
/frontend/packages/foundation/enterprise-store-adapter/ @evan-crash @duwenhan2byte
|
/packages/foundation/enterprise-store-adapter/ @evan-crash @duwenhan2byte
|
||||||
/frontend/packages/foundation/local-storage/ @duwenhan2byte @evan-crash
|
/packages/foundation/local-storage/ @duwenhan2byte @evan-crash
|
||||||
/frontend/packages/foundation/space-store-adapter/ @evan-crash @duwenhan2byte
|
/packages/foundation/space-store-adapter/ @evan-crash @duwenhan2byte
|
||||||
/frontend/packages/arch/bot-tea/ @Tecvan-fe @catee @soonco
|
/packages/arch/bot-tea/ @Tecvan-fe @catee @soonco
|
||||||
/frontend/packages/arch/tea/ @Tecvan-fe @evan-crash @soonco
|
/packages/arch/tea/ @Tecvan-fe @evan-crash @soonco
|
||||||
/frontend/packages/arch/tea-adapter/ @dragooncjw @Tecvan-fe
|
/packages/arch/tea-adapter/ @dragooncjw @Tecvan-fe
|
||||||
/frontend/packages/arch/tea-interface/ @dragooncjw @Tecvan-fe
|
/packages/arch/tea-interface/ @dragooncjw @Tecvan-fe
|
||||||
/frontend/packages/studio/stores/bot-detail/ @Hezi-crypto @catee @DingGao-Devin @duwenhan2byte @evan-crash
|
/packages/studio/stores/bot-detail/ @Hezi-crypto @catee @DingGao-Devin @duwenhan2byte @evan-crash
|
||||||
/frontend/packages/agent-ide/bot-input-length-limit/ @Hezi-crypto @catee @duwenhan2byte
|
/packages/agent-ide/bot-input-length-limit/ @Hezi-crypto @catee @duwenhan2byte
|
||||||
/frontend/packages/agent-ide/tool-config/ @haozhenfei @catee
|
/packages/agent-ide/tool-config/ @haozhenfei @catee
|
||||||
/frontend/packages/arch/bot-space-api/ @Tecvan-fe @duwenhan2byte
|
/packages/arch/bot-space-api/ @Tecvan-fe @duwenhan2byte
|
||||||
/frontend/packages/arch/bot-utils/ @Tecvan-fe
|
/packages/arch/bot-utils/ @Tecvan-fe
|
||||||
/frontend/packages/common/uploader-adapter/ @dragooncjw @Tecvan-fe
|
/packages/common/uploader-adapter/ @dragooncjw @Tecvan-fe
|
||||||
/frontend/packages/common/uploader-interface/ @dragooncjw @Tecvan-fe
|
/packages/common/uploader-interface/ @dragooncjw @Tecvan-fe
|
||||||
/frontend/packages/studio/user-store/ @duwenhan2byte @catee @lihuiwen
|
/packages/studio/user-store/ @duwenhan2byte @catee @lihuiwen
|
||||||
/frontend/packages/arch/foundation-sdk/ @evan-crash @duwenhan2byte
|
/packages/arch/foundation-sdk/ @evan-crash @duwenhan2byte
|
||||||
/frontend/packages/common/chat-area/chat-core/ @haozhenfei @Hezi-crypto @evan-crash
|
/packages/common/chat-area/chat-core/ @haozhenfei @Hezi-crypto @evan-crash
|
||||||
/frontend/packages/common/chat-area/utils/ @Hezi-crypto @haozhenfei
|
/packages/common/chat-area/utils/ @Hezi-crypto @haozhenfei
|
||||||
/frontend/packages/arch/bot-md-box-adapter/ @Hezi-crypto @iu1340 @dragooncjw @Tecvan-fe
|
/packages/arch/bot-md-box-adapter/ @Hezi-crypto @iu1340 @dragooncjw @Tecvan-fe
|
||||||
/frontend/packages/studio/common/file-kit/ @haozhenfei @evan-crash
|
/packages/studio/common/file-kit/ @haozhenfei @evan-crash
|
||||||
/frontend/packages/arch/slardar-adapter/ @Tecvan-fe @dragooncjw
|
/packages/arch/slardar-adapter/ @Tecvan-fe @dragooncjw
|
||||||
/frontend/packages/arch/default-slardar/ @Tecvan-fe @evan-crash
|
/packages/arch/default-slardar/ @Tecvan-fe @evan-crash
|
||||||
/frontend/packages/arch/fetch-stream/ @Hezi-crypto @haozhenfei
|
/packages/arch/fetch-stream/ @Hezi-crypto @haozhenfei
|
||||||
/frontend/packages/common/websocket-manager-adapter/ @haozhenfei @Hezi-crypto @catee
|
/packages/common/websocket-manager-adapter/ @haozhenfei @Hezi-crypto @catee
|
||||||
/frontend/packages/studio/autosave/ @catee
|
/packages/studio/autosave/ @catee
|
||||||
/frontend/packages/studio/bot-utils/ @catee @soonco @Hezi-crypto
|
/packages/studio/bot-utils/ @catee @soonco @Hezi-crypto
|
||||||
/frontend/packages/common/flowgram-adapter/common/ @zxhfighter @xiamidaxia @dragooncjw
|
/packages/common/flowgram-adapter/common/ @zxhfighter @xiamidaxia @dragooncjw
|
||||||
/frontend/packages/common/flowgram-adapter/free-layout-editor/ @zxhfighter @xiamidaxia @dragooncjw
|
/packages/common/flowgram-adapter/free-layout-editor/ @zxhfighter @xiamidaxia @dragooncjw
|
||||||
/frontend/packages/agent-ide/space-bot/ @soonco @evan-crash @duwenhan2byte @catee @DingGao-Devin
|
/packages/agent-ide/space-bot/ @soonco @evan-crash @duwenhan2byte @catee @DingGao-Devin
|
||||||
/frontend/packages/agent-ide/space-bot/src/store/bot-list-filter/ @duwenhan2byte @lihuiwen
|
/packages/agent-ide/space-bot/src/store/bot-list-filter/ @duwenhan2byte @lihuiwen
|
||||||
/frontend/packages/agent-ide/space-bot/src/store/bot-page/ @DingGao-Devin
|
/packages/agent-ide/space-bot/src/store/bot-page/ @DingGao-Devin
|
||||||
/frontend/packages/agent-ide/space-bot/src/store/explore/ @Tecvan-fe
|
/packages/agent-ide/space-bot/src/store/explore/ @Tecvan-fe
|
||||||
/frontend/packages/agent-ide/space-bot/src/store/risk-warning/ @lihuiwen @catee
|
/packages/agent-ide/space-bot/src/store/risk-warning/ @lihuiwen @catee
|
||||||
/frontend/packages/agent-ide/context/ @evan-crash
|
/packages/agent-ide/context/ @evan-crash
|
||||||
/frontend/packages/agent-ide/bot-editor-context-store/ @Hezi-crypto @duwenhan2byte @catee
|
/packages/agent-ide/bot-editor-context-store/ @Hezi-crypto @duwenhan2byte @catee
|
||||||
/frontend/packages/agent-ide/chat-background/ @catee
|
/packages/agent-ide/chat-background/ @catee
|
||||||
/frontend/packages/agent-ide/chat-background-config-content-adapter/ @Hezi-crypto @duwenhan2byte @catee @evan-crash @haozhenfei
|
/packages/agent-ide/chat-background-config-content-adapter/ @Hezi-crypto @duwenhan2byte @catee @evan-crash @haozhenfei
|
||||||
/frontend/packages/agent-ide/chat-background-config-content/ @Hezi-crypto @duwenhan2byte @catee @evan-crash @haozhenfei
|
/packages/agent-ide/chat-background-config-content/ @Hezi-crypto @duwenhan2byte @catee @evan-crash @haozhenfei
|
||||||
/frontend/packages/agent-ide/chat-background-shared/ @Hezi-crypto @duwenhan2byte @catee @evan-crash @haozhenfei
|
/packages/agent-ide/chat-background-shared/ @Hezi-crypto @duwenhan2byte @catee @evan-crash @haozhenfei
|
||||||
/frontend/packages/common/chat-area/chat-uikit/ @catee @Hezi-crypto @evan-crash @haozhenfei
|
/packages/common/chat-area/chat-uikit/ @catee @Hezi-crypto @evan-crash @haozhenfei
|
||||||
/frontend/packages/common/chat-area/hooks/ @Hezi-crypto @evan-crash
|
/packages/common/chat-area/hooks/ @Hezi-crypto @evan-crash
|
||||||
/frontend/packages/common/chat-area/chat-uikit-shared/ @Hezi-crypto @duwenhan2byte @catee @evan-crash @haozhenfei
|
/packages/common/chat-area/chat-uikit-shared/ @Hezi-crypto @duwenhan2byte @catee @evan-crash @haozhenfei
|
||||||
/frontend/packages/agent-ide/bot-audit-adapter/ @evan-crash @duwenhan2byte @Hezi-crypto @haozhenfei
|
/packages/agent-ide/bot-audit-adapter/ @evan-crash @duwenhan2byte @Hezi-crypto @haozhenfei
|
||||||
/frontend/packages/agent-ide/bot-audit-base/ @evan-crash @duwenhan2byte @Hezi-crypto @haozhenfei
|
/packages/agent-ide/bot-audit-base/ @evan-crash @duwenhan2byte @Hezi-crypto @haozhenfei
|
||||||
/frontend/packages/studio/components/ @soonco @evan-crash @duwenhan2byte @catee
|
/packages/studio/components/ @soonco @evan-crash @duwenhan2byte @catee
|
||||||
/frontend/packages/arch/bot-hooks/ @catee @Tecvan-fe @soonco
|
/packages/arch/bot-hooks/ @catee @Tecvan-fe @soonco
|
||||||
/frontend/packages/arch/bot-hooks/src/page-jump/ @evan-crash @catee
|
/packages/arch/bot-hooks/src/page-jump/ @evan-crash @catee
|
||||||
/frontend/packages/arch/bot-hooks-adapter/ @catee @Tecvan-fe @soonco
|
/packages/arch/bot-hooks-adapter/ @catee @Tecvan-fe @soonco
|
||||||
/frontend/packages/arch/bot-hooks-base/ @catee @Tecvan-fe @soonco
|
/packages/arch/bot-hooks-base/ @catee @Tecvan-fe @soonco
|
||||||
/frontend/packages/arch/responsive-kit/ @Tecvan-fe @DingGao-Devin
|
/packages/arch/responsive-kit/ @Tecvan-fe @DingGao-Devin
|
||||||
/frontend/packages/common/chat-area/chat-area/ @Hezi-crypto @haozhenfei @evan-crash @haozhenfei
|
/packages/common/chat-area/chat-area/ @Hezi-crypto @haozhenfei @evan-crash @haozhenfei
|
||||||
/frontend/packages/data/memory/llm-plugins/ @haozhenfei @catee @Hezi-crypto
|
/packages/data/memory/llm-plugins/ @haozhenfei @catee @Hezi-crypto
|
||||||
/frontend/packages/data/common/reporter/ @soonco @catee @evan-crash
|
/packages/data/common/reporter/ @soonco @catee @evan-crash
|
||||||
/frontend/packages/components/json-viewer/ @duwenhan2byte
|
/packages/components/json-viewer/ @duwenhan2byte
|
||||||
/frontend/packages/components/scroll-view/ @evan-crash
|
/packages/components/scroll-view/ @evan-crash
|
||||||
/frontend/packages/common/assets/ @Tecvan-fe @catee
|
/packages/common/assets/ @Tecvan-fe @catee
|
||||||
/frontend/packages/common/biz-components/ @duwenhan2byte
|
/packages/common/biz-components/ @duwenhan2byte
|
||||||
/frontend/packages/data/common/e2e/ @soonco @catee @evan-crash @haozhenfei @duwenhan2byte
|
/packages/data/common/e2e/ @soonco @catee @evan-crash @haozhenfei @duwenhan2byte
|
||||||
/frontend/packages/agent-ide/debug-tool-list/ @Hezi-crypto @duwenhan2byte @catee @evan-crash @haozhenfei
|
/packages/agent-ide/debug-tool-list/ @Hezi-crypto @duwenhan2byte @catee @evan-crash @haozhenfei
|
||||||
/frontend/packages/agent-ide/model-manager/ @Hezi-crypto @catee
|
/packages/agent-ide/model-manager/ @Hezi-crypto @catee
|
||||||
/frontend/packages/agent-ide/model-manager/src/components/multi-agent/ @catee
|
/packages/agent-ide/model-manager/src/components/multi-agent/ @catee
|
||||||
/frontend/packages/agent-ide/tool/ @catee
|
/packages/agent-ide/tool/ @catee
|
||||||
/frontend/packages/data/knowledge/knowledge-modal-base/ @haozhenfei @catee @Hezi-crypto
|
/packages/data/knowledge/knowledge-modal-base/ @haozhenfei @catee @Hezi-crypto
|
||||||
/frontend/packages/components/biz-tooltip-ui/ @Hezi-crypto @catee @evan-crash
|
/packages/components/biz-tooltip-ui/ @Hezi-crypto @catee @evan-crash
|
||||||
/frontend/packages/components/table-view/ @lihuiwen
|
/packages/components/table-view/ @lihuiwen
|
||||||
/frontend/packages/components/virtual-list/ @Tecvan-fe
|
/packages/components/virtual-list/ @Tecvan-fe
|
||||||
/frontend/packages/data/common/utils/ @soonco @catee @evan-crash
|
/packages/data/common/utils/ @soonco @catee @evan-crash
|
||||||
/frontend/packages/data/knowledge/knowledge-resource-processor-core/ @haozhenfei @catee @Hezi-crypto
|
/packages/data/knowledge/knowledge-resource-processor-core/ @haozhenfei @catee @Hezi-crypto
|
||||||
/frontend/packages/arch/pdfjs-shadow/ @Tecvan-fe
|
/packages/arch/pdfjs-shadow/ @Tecvan-fe
|
||||||
/frontend/packages/data/knowledge/common/stores/ @soonco @catee @evan-crash
|
/packages/data/knowledge/common/stores/ @soonco @catee @evan-crash
|
||||||
/frontend/packages/foundation/global-store/ @duwenhan2byte @evan-crash
|
/packages/foundation/global-store/ @duwenhan2byte @evan-crash
|
||||||
/frontend/config/postcss-config/ @Tecvan-fe
|
/config/postcss-config/ @Tecvan-fe
|
||||||
/frontend/config/tailwind-config/ @Tecvan-fe
|
/config/tailwind-config/ @Tecvan-fe
|
||||||
/frontend/infra/utils/monorepo-kits/ @Tecvan-fe @evan-crash
|
/infra/utils/monorepo-kits/ @Tecvan-fe @evan-crash
|
||||||
/frontend/packages/studio/premium/premium-components-adapter/ @evan-crash
|
/packages/studio/premium/premium-components-adapter/ @evan-crash
|
||||||
/frontend/packages/studio/premium/premium-store-adapter/ @evan-crash
|
/packages/studio/premium/premium-store-adapter/ @evan-crash
|
||||||
/frontend/packages/agent-ide/onboarding/ @Hezi-crypto @catee
|
/packages/agent-ide/onboarding/ @Hezi-crypto @catee
|
||||||
/frontend/packages/agent-ide/publish-to-base/ @catee
|
/packages/agent-ide/publish-to-base/ @catee
|
||||||
/frontend/packages/arch/report-tti/ @duwenhan2byte
|
/packages/arch/report-tti/ @duwenhan2byte
|
||||||
/frontend/packages/data/memory/database-creator/ @haozhenfei @catee @Hezi-crypto
|
/packages/data/memory/database-creator/ @haozhenfei @catee @Hezi-crypto
|
||||||
/frontend/packages/arch/hooks/ @Tecvan-fe @evan-crash
|
/packages/arch/hooks/ @Tecvan-fe @evan-crash
|
||||||
/frontend/packages/common/coze-mitt/ @evan-crash @duwenhan2byte
|
/packages/common/coze-mitt/ @evan-crash @duwenhan2byte
|
||||||
/frontend/packages/common/editor-plugins/ @haozhenfei @stream-pipe @Hezi-crypto
|
/packages/common/editor-plugins/ @haozhenfei @stream-pipe @Hezi-crypto
|
||||||
/frontend/packages/common/md-editor-adapter/ @haozhenfei @Hezi-crypto @catee
|
/packages/common/md-editor-adapter/ @haozhenfei @Hezi-crypto @catee
|
||||||
/frontend/packages/common/prompt-kit/main/ @haozhenfei @Hezi-crypto @catee
|
/packages/common/prompt-kit/main/ @haozhenfei @Hezi-crypto @catee
|
||||||
/frontend/packages/common/chat-area/chat-answer-action/ @Hezi-crypto @haozhenfei @lihuiwen
|
/packages/common/chat-area/chat-answer-action/ @Hezi-crypto @haozhenfei @lihuiwen
|
||||||
/frontend/packages/common/chat-area/plugin-message-grab/ @Hezi-crypto @haozhenfei
|
/packages/common/chat-area/plugin-message-grab/ @Hezi-crypto @haozhenfei
|
||||||
/frontend/packages/common/chat-area/text-grab/ @Hezi-crypto @haozhenfei
|
/packages/common/chat-area/text-grab/ @Hezi-crypto @haozhenfei
|
||||||
/frontend/packages/common/prompt-kit/adapter/ @haozhenfei @Hezi-crypto @catee
|
/packages/common/prompt-kit/adapter/ @haozhenfei @Hezi-crypto @catee
|
||||||
/frontend/packages/common/prompt-kit/base/ @haozhenfei @Hezi-crypto @catee
|
/packages/common/prompt-kit/base/ @haozhenfei @Hezi-crypto @catee
|
||||||
/frontend/packages/data/memory/database/ @haozhenfei @catee @Hezi-crypto
|
/packages/data/memory/database/ @haozhenfei @catee @Hezi-crypto
|
||||||
/frontend/packages/data/knowledge/knowledge-resource-processor-base/ @haozhenfei @catee @Hezi-crypto
|
/packages/data/knowledge/knowledge-resource-processor-base/ @haozhenfei @catee @Hezi-crypto
|
||||||
/frontend/packages/arch/utils/ @Tecvan-fe @evan-crash
|
/packages/arch/utils/ @Tecvan-fe @evan-crash
|
||||||
/frontend/packages/data/knowledge/common/components/ @haozhenfei @catee @Hezi-crypto
|
/packages/data/knowledge/common/components/ @haozhenfei @catee @Hezi-crypto
|
||||||
/frontend/packages/data/common/feature-register/ @haozhenfei @catee @Hezi-crypto
|
/packages/data/common/feature-register/ @haozhenfei @catee @Hezi-crypto
|
||||||
/frontend/packages/data/knowledge/common/hooks/ @Hezi-crypto @catee @evan-crash
|
/packages/data/knowledge/common/hooks/ @Hezi-crypto @catee @evan-crash
|
||||||
/frontend/packages/data/knowledge/common/services/ @Hezi-crypto @catee @evan-crash
|
/packages/data/knowledge/common/services/ @Hezi-crypto @catee @evan-crash
|
||||||
/frontend/packages/data/memory/database-v2-main/ @haozhenfei @catee @Hezi-crypto
|
/packages/data/memory/database-v2-main/ @haozhenfei @catee @Hezi-crypto
|
||||||
/frontend/packages/data/memory/database-v2-adapter/ @haozhenfei @catee @Hezi-crypto
|
/packages/data/memory/database-v2-adapter/ @haozhenfei @catee @Hezi-crypto
|
||||||
/frontend/packages/data/memory/database-v2-base/ @haozhenfei @catee @Hezi-crypto
|
/packages/data/memory/database-v2-base/ @haozhenfei @catee @Hezi-crypto
|
||||||
/frontend/packages/data/knowledge/knowledge-data-set-for-agent/ @Hezi-crypto @catee @evan-crash
|
/packages/data/knowledge/knowledge-data-set-for-agent/ @Hezi-crypto @catee @evan-crash
|
||||||
/frontend/packages/data/knowledge/knowledge-ide-base/ @haozhenfei @catee @Hezi-crypto
|
/packages/data/knowledge/knowledge-ide-base/ @haozhenfei @catee @Hezi-crypto
|
||||||
/frontend/packages/arch/bot-monaco-editor/ @Tecvan-fe
|
/packages/arch/bot-monaco-editor/ @Tecvan-fe
|
||||||
/frontend/packages/data/knowledge/knowledge-modal-adapter/ @haozhenfei @catee @Hezi-crypto
|
/packages/data/knowledge/knowledge-modal-adapter/ @haozhenfei @catee @Hezi-crypto
|
||||||
/frontend/packages/data/knowledge/knowledge-resource-processor-adapter/ @haozhenfei @catee @Hezi-crypto
|
/packages/data/knowledge/knowledge-resource-processor-adapter/ @haozhenfei @catee @Hezi-crypto
|
||||||
/frontend/packages/devops/debug/debug-panel/ @soonco @evan-crash @catee
|
/packages/devops/debug/debug-panel/ @soonco @evan-crash @catee
|
||||||
/frontend/packages/devops/json-link-preview/ @Maidang1 @Zhangchi123456
|
/packages/devops/json-link-preview/ @Maidang1 @Zhangchi123456
|
||||||
/frontend/packages/devops/common-modules/ @duwenhan2byte @evan-crash @catee
|
/packages/devops/common-modules/ @duwenhan2byte @evan-crash @catee
|
||||||
/frontend/packages/foundation/account-adapter/ @duwenhan2byte @evan-crash
|
/packages/foundation/account-adapter/ @duwenhan2byte @evan-crash
|
||||||
/frontend/packages/foundation/account-base/ @evan-crash @duwenhan2byte
|
/packages/foundation/account-base/ @evan-crash @duwenhan2byte
|
||||||
/frontend/packages/arch/api-schema/ @Tecvan-fe @evan-crash
|
/packages/arch/api-schema/ @Tecvan-fe @evan-crash
|
||||||
/frontend/infra/idl/idl2ts-runtime/ @Tecvan-fe @evan-crash
|
/infra/idl/idl2ts-runtime/ @Tecvan-fe @evan-crash
|
||||||
/frontend/infra/idl/idl2ts-cli/ @Tecvan-fe @evan-crash
|
/infra/idl/idl2ts-cli/ @Tecvan-fe @evan-crash
|
||||||
/frontend/infra/idl/idl2ts-generator/ @Tecvan-fe @evan-crash
|
/infra/idl/idl2ts-generator/ @Tecvan-fe @evan-crash
|
||||||
/frontend/infra/idl/idl-parser/ @Tecvan-fe @evan-crash
|
/infra/idl/idl-parser/ @Tecvan-fe @evan-crash
|
||||||
/frontend/infra/utils/rush-logger/ @catee @Tecvan-fe
|
/infra/utils/rush-logger/ @catee @Tecvan-fe
|
||||||
/frontend/infra/idl/idl2ts-helper/ @Tecvan-fe @evan-crash
|
/infra/idl/idl2ts-helper/ @Tecvan-fe @evan-crash
|
||||||
/frontend/infra/idl/idl2ts-plugin/ @Tecvan-fe @evan-crash
|
/infra/idl/idl2ts-plugin/ @Tecvan-fe @evan-crash
|
||||||
/frontend/packages/studio/open-platform/open-env-adapter/ @soonco @Hezi-crypto @DingGao-Devin
|
/packages/studio/open-platform/open-env-adapter/ @soonco @Hezi-crypto @DingGao-Devin
|
||||||
/frontend/infra/plugins/pkg-root-webpack-plugin/ @Tecvan-fe
|
/infra/plugins/pkg-root-webpack-plugin/ @Tecvan-fe
|
||||||
/frontend/packages/studio/publish-manage-hooks/ @duwenhan2byte @evan-crash
|
/packages/studio/publish-manage-hooks/ @duwenhan2byte @evan-crash
|
||||||
/frontend/packages/foundation/layout/ @evan-crash @duwenhan2byte
|
/packages/foundation/layout/ @evan-crash @duwenhan2byte
|
||||||
/frontend/packages/studio/open-platform/open-auth/ @evan-crash @DingGao-Devin
|
/packages/studio/open-platform/open-auth/ @evan-crash @DingGao-Devin
|
||||||
/frontend/packages/agent-ide/entry-adapter/ @Hezi-crypto @duwenhan2byte @catee @evan-crash @haozhenfei
|
/packages/agent-ide/entry-adapter/ @Hezi-crypto @duwenhan2byte @catee @evan-crash @haozhenfei
|
||||||
/frontend/packages/agent-ide/entry/ @soonco @duwenhan2byte @catee @evan-crash
|
/packages/agent-ide/entry/ @soonco @duwenhan2byte @catee @evan-crash
|
||||||
/frontend/packages/agent-ide/bot-config-area-adapter/ @haozhenfei @Hezi-crypto @duwenhan2byte @catee @evan-crash
|
/packages/agent-ide/bot-config-area-adapter/ @haozhenfei @Hezi-crypto @duwenhan2byte @catee @evan-crash
|
||||||
/frontend/packages/agent-ide/bot-config-area/ @haozhenfei @Hezi-crypto @duwenhan2byte @catee @evan-crash
|
/packages/agent-ide/bot-config-area/ @haozhenfei @Hezi-crypto @duwenhan2byte @catee @evan-crash
|
||||||
/frontend/packages/agent-ide/bot-plugin/entry/ @evan-crash @lihuiwen @catee
|
/packages/agent-ide/bot-plugin/entry/ @evan-crash @lihuiwen @catee
|
||||||
/frontend/packages/agent-ide/bot-plugin/export/ @lihuiwen @catee
|
/packages/agent-ide/bot-plugin/export/ @lihuiwen @catee
|
||||||
/frontend/packages/agent-ide/bot-plugin/mock-set/ @lihuiwen @catee @duwenhan2byte
|
/packages/agent-ide/bot-plugin/mock-set/ @lihuiwen @catee @duwenhan2byte
|
||||||
/frontend/packages/studio/mockset-edit-modal-adapter/ @Hezi-crypto @duwenhan2byte @catee @evan-crash @haozhenfei
|
/packages/studio/mockset-edit-modal-adapter/ @Hezi-crypto @duwenhan2byte @catee @evan-crash @haozhenfei
|
||||||
/frontend/packages/studio/mockset-shared/ @Hezi-crypto @duwenhan2byte @catee @evan-crash @haozhenfei
|
/packages/studio/mockset-shared/ @Hezi-crypto @duwenhan2byte @catee @evan-crash @haozhenfei
|
||||||
/frontend/packages/studio/mockset-editor/ @Hezi-crypto @duwenhan2byte @catee @evan-crash @haozhenfei
|
/packages/studio/mockset-editor/ @Hezi-crypto @duwenhan2byte @catee @evan-crash @haozhenfei
|
||||||
/frontend/packages/studio/mockset-editor-adapter/ @Hezi-crypto @duwenhan2byte @catee @evan-crash @haozhenfei
|
/packages/studio/mockset-editor-adapter/ @Hezi-crypto @duwenhan2byte @catee @evan-crash @haozhenfei
|
||||||
/frontend/packages/agent-ide/bot-plugin/tools/ @lihuiwen @catee
|
/packages/agent-ide/bot-plugin/tools/ @lihuiwen @catee
|
||||||
/frontend/packages/studio/stores/bot-plugin/ @lihuiwen @Hezi-crypto @catee
|
/packages/studio/stores/bot-plugin/ @lihuiwen @Hezi-crypto @catee
|
||||||
/frontend/packages/studio/plugin-shared/ @Hezi-crypto @duwenhan2byte @catee @evan-crash @haozhenfei
|
/packages/studio/plugin-shared/ @Hezi-crypto @duwenhan2byte @catee @evan-crash @haozhenfei
|
||||||
/frontend/packages/agent-ide/plugin-modal-adapter/ @Hezi-crypto @duwenhan2byte @catee @evan-crash @haozhenfei
|
/packages/agent-ide/plugin-modal-adapter/ @Hezi-crypto @duwenhan2byte @catee @evan-crash @haozhenfei
|
||||||
/frontend/packages/agent-ide/plugin-shared/ @Hezi-crypto @duwenhan2byte @catee @evan-crash @haozhenfei
|
/packages/agent-ide/plugin-shared/ @Hezi-crypto @duwenhan2byte @catee @evan-crash @haozhenfei
|
||||||
/frontend/packages/community/component/ @DingGao-Devin @Hezi-crypto @evan-crash @duwenhan2byte
|
/packages/community/component/ @DingGao-Devin @Hezi-crypto @evan-crash @duwenhan2byte
|
||||||
/frontend/packages/studio/plugin-form-adapter/ @Hezi-crypto @duwenhan2byte @catee @evan-crash @haozhenfei
|
/packages/studio/plugin-form-adapter/ @Hezi-crypto @duwenhan2byte @catee @evan-crash @haozhenfei
|
||||||
/frontend/packages/workflow/base/ @xiamidaxia @zxhfighter
|
/packages/workflow/base/ @xiamidaxia @zxhfighter
|
||||||
/frontend/packages/agent-ide/plugin-content-adapter/ @Hezi-crypto @duwenhan2byte @catee @evan-crash @haozhenfei
|
/packages/agent-ide/plugin-content-adapter/ @Hezi-crypto @duwenhan2byte @catee @evan-crash @haozhenfei
|
||||||
/frontend/packages/agent-ide/plugin-content/ @Hezi-crypto @duwenhan2byte @catee @evan-crash @haozhenfei
|
/packages/agent-ide/plugin-content/ @Hezi-crypto @duwenhan2byte @catee @evan-crash @haozhenfei
|
||||||
/frontend/packages/agent-ide/plugin-setting-adapter/ @Hezi-crypto @duwenhan2byte @catee @evan-crash @haozhenfei
|
/packages/agent-ide/plugin-setting-adapter/ @Hezi-crypto @duwenhan2byte @catee @evan-crash @haozhenfei
|
||||||
/frontend/packages/agent-ide/plugin-setting/ @Hezi-crypto @duwenhan2byte @catee @evan-crash @haozhenfei
|
/packages/agent-ide/plugin-setting/ @Hezi-crypto @duwenhan2byte @catee @evan-crash @haozhenfei
|
||||||
/frontend/packages/agent-ide/bot-plugin/plugin-risk-warning/ @catee @evan-crash
|
/packages/agent-ide/bot-plugin/plugin-risk-warning/ @catee @evan-crash
|
||||||
/frontend/packages/studio/plugin-publish-ui-adapter/ @Hezi-crypto @duwenhan2byte @catee @evan-crash @haozhenfei
|
/packages/studio/plugin-publish-ui-adapter/ @Hezi-crypto @duwenhan2byte @catee @evan-crash @haozhenfei
|
||||||
/frontend/packages/studio/plugin-tool-columns-adapter/ @Hezi-crypto @duwenhan2byte @catee @evan-crash @haozhenfei
|
/packages/studio/plugin-tool-columns-adapter/ @Hezi-crypto @duwenhan2byte @catee @evan-crash @haozhenfei
|
||||||
/frontend/packages/studio/plugin-tool-columns/ @Hezi-crypto @duwenhan2byte @catee @evan-crash @haozhenfei
|
/packages/studio/plugin-tool-columns/ @Hezi-crypto @duwenhan2byte @catee @evan-crash @haozhenfei
|
||||||
/frontend/packages/agent-ide/chat-debug-area/ @soonco @duwenhan2byte @catee @Hezi-crypto @haozhenfei @evan-crash
|
/packages/agent-ide/chat-debug-area/ @soonco @duwenhan2byte @catee @Hezi-crypto @haozhenfei @evan-crash
|
||||||
/frontend/packages/agent-ide/chat-answer-action-adapter/ @Hezi-crypto @duwenhan2byte @catee @evan-crash @haozhenfei
|
/packages/agent-ide/chat-answer-action-adapter/ @Hezi-crypto @duwenhan2byte @catee @evan-crash @haozhenfei
|
||||||
/frontend/packages/agent-ide/chat-area-plugin-debug-common/ @Hezi-crypto @haozhenfei
|
/packages/agent-ide/chat-area-plugin-debug-common/ @Hezi-crypto @haozhenfei
|
||||||
/frontend/packages/agent-ide/chat-components-adapter/ @Hezi-crypto @duwenhan2byte @catee @evan-crash @haozhenfei
|
/packages/agent-ide/chat-components-adapter/ @Hezi-crypto @duwenhan2byte @catee @evan-crash @haozhenfei
|
||||||
/frontend/packages/common/chat-area/plugin-chat-background/ @Tecvan-fe
|
/packages/common/chat-area/plugin-chat-background/ @Tecvan-fe
|
||||||
/frontend/packages/common/chat-area/chat-area-plugin-reasoning/ @catee @Hezi-crypto
|
/packages/common/chat-area/chat-area-plugin-reasoning/ @catee @Hezi-crypto
|
||||||
/frontend/packages/common/chat-area/plugin-resume/ @Tecvan-fe
|
/packages/common/chat-area/plugin-resume/ @Tecvan-fe
|
||||||
/frontend/packages/common/chat-area/plugin-chat-shortcuts/ @haozhenfei @duwenhan2byte @Hezi-crypto
|
/packages/common/chat-area/plugin-chat-shortcuts/ @haozhenfei @duwenhan2byte @Hezi-crypto
|
||||||
/frontend/packages/workflow/sdk/ @zxhfighter @xiamidaxia
|
/packages/workflow/sdk/ @zxhfighter @xiamidaxia
|
||||||
/frontend/packages/workflow/components/ @LLLLeeJ @zxhfighter
|
/packages/workflow/components/ @LLLLeeJ @zxhfighter
|
||||||
/frontend/packages/components/loading-button/ @catee
|
/packages/components/loading-button/ @catee
|
||||||
/frontend/packages/components/mouse-pad-selector/ @zxhfighter
|
/packages/components/mouse-pad-selector/ @zxhfighter
|
||||||
/frontend/packages/workflow/adapter/resources/ @LLLLeeJ @JxJuly @xiamidaxia @luics @zxhfighter @stream-pipe
|
/packages/workflow/adapter/resources/ @LLLLeeJ @JxJuly @xiamidaxia @luics @zxhfighter @stream-pipe
|
||||||
/frontend/packages/common/chat-area/chat-workflow-render/ @Hezi-crypto @duwenhan2byte @catee @evan-crash @haozhenfei
|
/packages/common/chat-area/chat-workflow-render/ @Hezi-crypto @duwenhan2byte @catee @evan-crash @haozhenfei
|
||||||
/frontend/packages/agent-ide/onboarding-message-adapter/ @Hezi-crypto @duwenhan2byte @catee @evan-crash @haozhenfei
|
/packages/agent-ide/onboarding-message-adapter/ @Hezi-crypto @duwenhan2byte @catee @evan-crash @haozhenfei
|
||||||
/frontend/packages/agent-ide/plugin-area-adapter/ @Hezi-crypto @duwenhan2byte @catee @evan-crash @haozhenfei
|
/packages/agent-ide/plugin-area-adapter/ @Hezi-crypto @duwenhan2byte @catee @evan-crash @haozhenfei
|
||||||
/frontend/packages/agent-ide/prompt-adapter/ @Hezi-crypto @duwenhan2byte @catee @evan-crash @haozhenfei
|
/packages/agent-ide/prompt-adapter/ @Hezi-crypto @duwenhan2byte @catee @evan-crash @haozhenfei
|
||||||
/frontend/packages/agent-ide/prompt/ @Hezi-crypto @duwenhan2byte @catee @evan-crash @haozhenfei
|
/packages/agent-ide/prompt/ @Hezi-crypto @duwenhan2byte @catee @evan-crash @haozhenfei
|
||||||
/frontend/packages/agent-ide/workflow/ @soonco @duwenhan2byte @catee
|
/packages/agent-ide/workflow/ @soonco @duwenhan2byte @catee
|
||||||
/frontend/packages/agent-ide/navigate/ @soonco @duwenhan2byte @catee
|
/packages/agent-ide/navigate/ @soonco @duwenhan2byte @catee
|
||||||
/frontend/packages/agent-ide/workflow-as-agent-adapter/ @Hezi-crypto @duwenhan2byte @catee @evan-crash @haozhenfei
|
/packages/agent-ide/workflow-as-agent-adapter/ @Hezi-crypto @duwenhan2byte @catee @evan-crash @haozhenfei
|
||||||
/frontend/packages/agent-ide/workflow-item/ @Hezi-crypto @duwenhan2byte @catee @evan-crash @haozhenfei
|
/packages/agent-ide/workflow-item/ @Hezi-crypto @duwenhan2byte @catee @evan-crash @haozhenfei
|
||||||
/frontend/packages/agent-ide/workflow-card-adapter/ @Hezi-crypto @duwenhan2byte @catee @evan-crash @haozhenfei
|
/packages/agent-ide/workflow-card-adapter/ @Hezi-crypto @duwenhan2byte @catee @evan-crash @haozhenfei
|
||||||
/frontend/packages/agent-ide/workflow-modal/ @Hezi-crypto @duwenhan2byte @catee @evan-crash @haozhenfei
|
/packages/agent-ide/workflow-modal/ @Hezi-crypto @duwenhan2byte @catee @evan-crash @haozhenfei
|
||||||
/frontend/packages/agent-ide/memory-tool-pane-adapter/ @Hezi-crypto @duwenhan2byte @catee @evan-crash @haozhenfei
|
/packages/agent-ide/memory-tool-pane-adapter/ @Hezi-crypto @duwenhan2byte @catee @evan-crash @haozhenfei
|
||||||
/frontend/packages/agent-ide/skills-pane-adapter/ @Hezi-crypto @duwenhan2byte @catee @evan-crash @haozhenfei
|
/packages/agent-ide/skills-pane-adapter/ @Hezi-crypto @duwenhan2byte @catee @evan-crash @haozhenfei
|
||||||
/frontend/packages/agent-ide/layout-adapter/ @Hezi-crypto @duwenhan2byte @catee @evan-crash @haozhenfei
|
/packages/agent-ide/layout-adapter/ @Hezi-crypto @duwenhan2byte @catee @evan-crash @haozhenfei
|
||||||
/frontend/packages/agent-ide/layout/ @soonco @duwenhan2byte @catee
|
/packages/agent-ide/layout/ @soonco @duwenhan2byte @catee
|
||||||
/frontend/packages/agent-ide/chat-area-provider-adapter/ @Hezi-crypto @duwenhan2byte @catee @evan-crash @haozhenfei
|
/packages/agent-ide/chat-area-provider-adapter/ @Hezi-crypto @duwenhan2byte @catee @evan-crash @haozhenfei
|
||||||
/frontend/packages/agent-ide/chat-area-provider/ @Hezi-crypto @duwenhan2byte @catee @evan-crash @haozhenfei
|
/packages/agent-ide/chat-area-provider/ @Hezi-crypto @duwenhan2byte @catee @evan-crash @haozhenfei
|
||||||
/frontend/packages/studio/entity-adapter/ @Hezi-crypto @duwenhan2byte @catee @evan-crash @haozhenfei
|
/packages/studio/entity-adapter/ @Hezi-crypto @duwenhan2byte @catee @evan-crash @haozhenfei
|
||||||
/frontend/packages/foundation/account-ui-adapter/ @duwenhan2byte @evan-crash
|
/packages/foundation/account-ui-adapter/ @duwenhan2byte @evan-crash
|
||||||
/frontend/packages/foundation/account-ui-base/ @evan-crash @duwenhan2byte
|
/packages/foundation/account-ui-base/ @evan-crash @duwenhan2byte
|
||||||
/frontend/packages/foundation/foundation-sdk/ @evan-crash @duwenhan2byte
|
/packages/foundation/foundation-sdk/ @evan-crash @duwenhan2byte
|
||||||
/frontend/packages/foundation/global/ @evan-crash @duwenhan2byte
|
/packages/foundation/global/ @evan-crash @duwenhan2byte
|
||||||
/frontend/packages/studio/workspace/project-entity-adapter/ @Hezi-crypto @catee @duwenhan2byte
|
/packages/studio/workspace/project-entity-adapter/ @Hezi-crypto @catee @duwenhan2byte
|
||||||
/frontend/packages/studio/workspace/project-entity-base/ @Hezi-crypto @catee @duwenhan2byte
|
/packages/studio/workspace/project-entity-base/ @Hezi-crypto @catee @duwenhan2byte
|
||||||
/frontend/packages/foundation/global-adapter/ @evan-crash @duwenhan2byte
|
/packages/foundation/global-adapter/ @evan-crash @duwenhan2byte
|
||||||
/frontend/packages/foundation/browser-upgrade-banner/ @evan-crash @duwenhan2byte
|
/packages/foundation/browser-upgrade-banner/ @evan-crash @duwenhan2byte
|
||||||
/frontend/packages/foundation/space-ui-adapter/ @evan-crash @duwenhan2byte
|
/packages/foundation/space-ui-adapter/ @evan-crash @duwenhan2byte
|
||||||
/frontend/packages/foundation/space-ui-base/ @evan-crash @duwenhan2byte
|
/packages/foundation/space-ui-base/ @evan-crash @duwenhan2byte
|
||||||
/frontend/packages/common/auth/ @evan-crash @duwenhan2byte
|
/packages/common/auth/ @evan-crash @duwenhan2byte
|
||||||
/frontend/packages/common/auth-adapter/ @evan-crash @duwenhan2byte
|
/packages/common/auth-adapter/ @evan-crash @duwenhan2byte
|
||||||
/frontend/packages/project-ide/main/ @dragooncjw @JxJuly @xiamidaxia @catee @lihuiwen
|
/packages/project-ide/main/ @dragooncjw @JxJuly @xiamidaxia @catee @lihuiwen
|
||||||
/frontend/packages/components/resource-tree/ @dragooncjw @xiamidaxia @JxJuly
|
/packages/components/resource-tree/ @dragooncjw @xiamidaxia @JxJuly
|
||||||
/frontend/packages/common/flowgram-adapter/fixed-layout-editor/ @zxhfighter @xiamidaxia @dragooncjw
|
/packages/common/flowgram-adapter/fixed-layout-editor/ @zxhfighter @xiamidaxia @dragooncjw
|
||||||
/frontend/packages/project-ide/biz-components/ @zxhfighter @xiamidaxia
|
/packages/project-ide/biz-components/ @zxhfighter @xiamidaxia
|
||||||
/frontend/packages/project-ide/framework/ @dragooncjw @JxJuly @xiamidaxia
|
/packages/project-ide/framework/ @dragooncjw @JxJuly @xiamidaxia
|
||||||
/frontend/packages/project-ide/base-adapter/ @dragooncjw @xiamidaxia
|
/packages/project-ide/base-adapter/ @dragooncjw @xiamidaxia
|
||||||
/frontend/packages/project-ide/base-interface/ @dragooncjw @xiamidaxia
|
/packages/project-ide/base-interface/ @dragooncjw @xiamidaxia
|
||||||
/frontend/packages/project-ide/client/ @dragooncjw @JxJuly @xiamidaxia
|
/packages/project-ide/client/ @dragooncjw @JxJuly @xiamidaxia
|
||||||
/frontend/packages/project-ide/core/ @dragooncjw @JxJuly @xiamidaxia
|
/packages/project-ide/core/ @dragooncjw @JxJuly @xiamidaxia
|
||||||
/frontend/packages/project-ide/view/ @dragooncjw @JxJuly @xiamidaxia
|
/packages/project-ide/view/ @dragooncjw @JxJuly @xiamidaxia
|
||||||
/frontend/packages/project-ide/biz-data/ @haozhenfei @lihuiwen @catee @soonco
|
/packages/project-ide/biz-data/ @haozhenfei @lihuiwen @catee @soonco
|
||||||
/frontend/packages/data/knowledge/knowledge-ide-adapter/ @haozhenfei @catee @Hezi-crypto
|
/packages/data/knowledge/knowledge-ide-adapter/ @haozhenfei @catee @Hezi-crypto
|
||||||
/frontend/packages/data/memory/variables/ @haozhenfei @catee @Hezi-crypto
|
/packages/data/memory/variables/ @haozhenfei @catee @Hezi-crypto
|
||||||
/frontend/packages/project-ide/biz-plugin/ @xiamidaxia @lihuiwen @catee
|
/packages/project-ide/biz-plugin/ @xiamidaxia @lihuiwen @catee
|
||||||
/frontend/packages/project-ide/biz-plugin-registry-adapter/ @Hezi-crypto @duwenhan2byte @catee @evan-crash @haozhenfei
|
/packages/project-ide/biz-plugin-registry-adapter/ @Hezi-crypto @duwenhan2byte @catee @evan-crash @haozhenfei
|
||||||
/frontend/packages/project-ide/biz-workflow/ @dragooncjw @JxJuly @xiamidaxia
|
/packages/project-ide/biz-workflow/ @dragooncjw @JxJuly @xiamidaxia
|
||||||
/frontend/packages/studio/open-platform/open-chat/ @soonco @Hezi-crypto @DingGao-Devin
|
/packages/studio/open-platform/open-chat/ @soonco @Hezi-crypto @DingGao-Devin
|
||||||
/frontend/packages/workflow/playground/ @LLLLeeJ @xiamidaxia @luics @zxhfighter
|
/packages/workflow/playground/ @LLLLeeJ @xiamidaxia @luics @zxhfighter
|
||||||
/frontend/packages/arch/load-remote-worker/ @Tecvan-fe
|
/packages/arch/load-remote-worker/ @Tecvan-fe
|
||||||
/frontend/packages/devops/mockset-manage/ @soonco @evan-crash @catee
|
/packages/devops/mockset-manage/ @soonco @evan-crash @catee
|
||||||
/frontend/packages/devops/testset-manage/ @mocayo @JxJuly
|
/packages/devops/testset-manage/ @mocayo @JxJuly
|
||||||
/frontend/packages/workflow/adapter/base/ @LLLLeeJ @JxJuly @xiamidaxia @luics @zxhfighter @stream-pipe
|
/packages/workflow/adapter/base/ @LLLLeeJ @JxJuly @xiamidaxia @luics @zxhfighter @stream-pipe
|
||||||
/frontend/packages/workflow/adapter/code-editor/ @LLLLeeJ @JxJuly @xiamidaxia @luics @zxhfighter @stream-pipe
|
/packages/workflow/adapter/code-editor/ @LLLLeeJ @JxJuly @xiamidaxia @luics @zxhfighter @stream-pipe
|
||||||
/frontend/packages/workflow/fabric-canvas/ @xiamidaxia @zxhfighter
|
/packages/workflow/fabric-canvas/ @xiamidaxia @zxhfighter
|
||||||
/frontend/packages/workflow/feature-encapsulate/ @zxhfighter
|
/packages/workflow/feature-encapsulate/ @zxhfighter
|
||||||
/frontend/packages/workflow/nodes/ @xiamidaxia @zxhfighter
|
/packages/workflow/nodes/ @xiamidaxia @zxhfighter
|
||||||
/frontend/packages/workflow/setters/ @Tecvan-fe
|
/packages/workflow/setters/ @Tecvan-fe
|
||||||
/frontend/packages/workflow/variable/ @zxhfighter @LLLLeeJ @xiamidaxia
|
/packages/workflow/variable/ @zxhfighter @LLLLeeJ @xiamidaxia
|
||||||
/frontend/packages/workflow/render/ @dragooncjw @xiamidaxia
|
/packages/workflow/render/ @dragooncjw @xiamidaxia
|
||||||
/frontend/packages/workflow/history/ @xiamidaxia @zxhfighter
|
/packages/workflow/history/ @xiamidaxia @zxhfighter
|
||||||
/frontend/packages/workflow/adapter/nodes/ @LLLLeeJ @JxJuly @xiamidaxia @luics @zxhfighter @stream-pipe
|
/packages/workflow/adapter/nodes/ @LLLLeeJ @JxJuly @xiamidaxia @luics @zxhfighter @stream-pipe
|
||||||
/frontend/packages/workflow/test-run/ @JxJuly @xiamidaxia @luics @zxhfighter @dragooncjw
|
/packages/workflow/test-run/ @JxJuly @xiamidaxia @luics @zxhfighter @dragooncjw
|
||||||
/frontend/packages/workflow/test-run-next/main/ @JxJuly @LLLLeeJ @xiamidaxia @zxhfighter
|
/packages/workflow/test-run-next/main/ @JxJuly @LLLLeeJ @xiamidaxia @zxhfighter
|
||||||
/frontend/packages/workflow/test-run-next/form/ @JxJuly @LLLLeeJ @xiamidaxia @zxhfighter
|
/packages/workflow/test-run-next/form/ @JxJuly @LLLLeeJ @xiamidaxia @zxhfighter
|
||||||
/frontend/packages/workflow/test-run-next/shared/ @JxJuly @LLLLeeJ @xiamidaxia @zxhfighter
|
/packages/workflow/test-run-next/shared/ @JxJuly @LLLLeeJ @xiamidaxia @zxhfighter
|
||||||
/frontend/packages/workflow/test-run-next/trace/ @JxJuly @LLLLeeJ @xiamidaxia @zxhfighter
|
/packages/workflow/test-run-next/trace/ @JxJuly @LLLLeeJ @xiamidaxia @zxhfighter
|
||||||
/frontend/packages/project-ide/ui-adapter/ @dragooncjw @xiamidaxia
|
/packages/project-ide/ui-adapter/ @dragooncjw @xiamidaxia
|
||||||
/frontend/packages/studio/workspace/project-publish/ @catee @lihuiwen
|
/packages/studio/workspace/project-publish/ @catee @lihuiwen
|
||||||
/frontend/packages/studio/workspace/entry-adapter/ @duwenhan2byte @evan-crash
|
/packages/studio/workspace/entry-adapter/ @duwenhan2byte @evan-crash
|
||||||
/frontend/packages/studio/workspace/entry-base/ @duwenhan2byte @catee @evan-crash
|
/packages/studio/workspace/entry-base/ @duwenhan2byte @catee @evan-crash
|
||||||
/frontend/packages/workflow/adapter/playground/ @LLLLeeJ @JxJuly @xiamidaxia @luics @zxhfighter @stream-pipe
|
/packages/workflow/adapter/playground/ @LLLLeeJ @JxJuly @xiamidaxia @luics @zxhfighter @stream-pipe
|
||||||
/frontend/infra/plugins/import-watch-loader/ @Tecvan-fe
|
/infra/plugins/import-watch-loader/ @Tecvan-fe
|
||||||
/frontend/config/rsbuild-config/ @Tecvan-fe
|
/config/rsbuild-config/ @Tecvan-fe
|
||||||
/frontend/packages/community/explore/ @evan-crash @duwenhan2byte
|
/packages/community/explore/ @evan-crash @duwenhan2byte
|
||||||
/frontend/common/_templates/node-core/ @Tecvan-fe
|
/common/_templates/node-core/ @Tecvan-fe
|
||||||
/frontend/common/_templates/rspack-web/ @Tecvan-fe
|
/common/_templates/rspack-web/ @Tecvan-fe
|
||||||
|
|
||||||
|
|
||||||
/backend/ @fanlv @junwen-lee @liuyunchao-1998 @lvxinyu-1117 @hi-pender @luohq-bytedance @shentongmartin @mrh997 @meguminnnnnnnnn @N3kox @zhuangjie1125
|
|
||||||
/docker/ @fanlv @junwen-lee @liuyunchao-1998 @lvxinyu-1117 @hi-pender @luohq-bytedance @shentongmartin @mrh997 @meguminnnnnnnnn @N3kox @zhuangjie1125
|
|
||||||
/helm/ @fanlv @junwen-lee @liuyunchao-1998 @lvxinyu-1117 @hi-pender @luohq-bytedance @shentongmartin @mrh997 @meguminnnnnnnnn @N3kox @zhuangjie1125
|
|
||||||
|
|||||||
294
.github/workflows/ci.yml
vendored
294
.github/workflows/ci.yml
vendored
@ -1,294 +0,0 @@
|
|||||||
name: CI
|
|
||||||
on:
|
|
||||||
pull_request:
|
|
||||||
branches: ['main']
|
|
||||||
paths:
|
|
||||||
- 'github/**'
|
|
||||||
- 'idl/**'
|
|
||||||
- 'frontend/**'
|
|
||||||
- 'common/**'
|
|
||||||
- 'rush.json'
|
|
||||||
# Allows you to run this workflow manually from the Actions tab
|
|
||||||
workflow_dispatch:
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
setup:
|
|
||||||
strategy:
|
|
||||||
matrix:
|
|
||||||
include:
|
|
||||||
- NodeVersion: 22.16.0
|
|
||||||
NodeVersionDisplayName: 22
|
|
||||||
OS: ubuntu-latest
|
|
||||||
name: Setup and Install Dependencies
|
|
||||||
runs-on: ${{ matrix.OS }}
|
|
||||||
outputs:
|
|
||||||
cache_file: ${{ steps.process-files.outputs.cache_file }}
|
|
||||||
matrix_node_version: ${{ matrix.NodeVersion }}
|
|
||||||
matrix_os: ${{ matrix.OS }}
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
with:
|
|
||||||
fetch-depth: 1
|
|
||||||
|
|
||||||
- name: Get changed files
|
|
||||||
id: changed-files
|
|
||||||
uses: tj-actions/changed-files@v45
|
|
||||||
|
|
||||||
- name: Process changed files
|
|
||||||
id: process-files
|
|
||||||
run: |
|
|
||||||
# 获取所有变更文件
|
|
||||||
all_files="${{ steps.changed-files.outputs.all_changed_files }}"
|
|
||||||
|
|
||||||
# 过滤掉 common/changes 目录下的文件
|
|
||||||
filtered_files=""
|
|
||||||
for file in $all_files; do
|
|
||||||
if [[ ! "$file" =~ ^common/changes/.* ]]; then
|
|
||||||
if [ -z "$filtered_files" ]; then
|
|
||||||
filtered_files="$file"
|
|
||||||
else
|
|
||||||
filtered_files="$filtered_files $file"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
# 创建 JSON 格式的缓存文件
|
|
||||||
echo "[$( echo "$filtered_files" | sed 's/ /", "/g' | sed 's/^/"/' | sed 's/$/"/' )]" > changed-files-cache.json
|
|
||||||
|
|
||||||
# 输出缓存文件路径供后续步骤使用
|
|
||||||
echo "cache_file=changed-files-cache.json" >> $GITHUB_OUTPUT
|
|
||||||
|
|
||||||
echo "过滤前文件数量: $(echo $all_files | wc -w)"
|
|
||||||
echo "过滤后文件数量: $(echo $filtered_files | wc -w)"
|
|
||||||
echo "已生成缓存文件: changed-files-cache.json"
|
|
||||||
|
|
||||||
- name: Config Git User
|
|
||||||
# should be turn to ci user
|
|
||||||
run: |
|
|
||||||
git config --local user.name "flow_bot"
|
|
||||||
git config --local user.email "flow_bot@bytedance.com"
|
|
||||||
|
|
||||||
- uses: actions/setup-node@v3
|
|
||||||
with:
|
|
||||||
node-version: ${{ matrix.NodeVersion }}
|
|
||||||
|
|
||||||
- name: Upload changed files cache
|
|
||||||
uses: actions/upload-artifact@v4
|
|
||||||
with:
|
|
||||||
name: changed-files-cache
|
|
||||||
path: changed-files-cache.json
|
|
||||||
retention-days: 1
|
|
||||||
|
|
||||||
build:
|
|
||||||
needs: setup
|
|
||||||
runs-on: ${{ needs.setup.outputs.matrix_os }}
|
|
||||||
name: Increment Build
|
|
||||||
env:
|
|
||||||
BUILD_BRANCH: ${{ github.head_ref || github.ref_name }}
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
with:
|
|
||||||
fetch-depth: 1
|
|
||||||
|
|
||||||
- uses: actions/setup-node@v3
|
|
||||||
with:
|
|
||||||
node-version: ${{ needs.setup.outputs.matrix_node_version }}
|
|
||||||
|
|
||||||
- name: Cache
|
|
||||||
uses: actions/cache@v4
|
|
||||||
with:
|
|
||||||
path: |
|
|
||||||
common/temp/pnpm-local
|
|
||||||
common/temp/pnpm-store
|
|
||||||
common/temp/install-run
|
|
||||||
key: ${{ runner.os }}-rush-store-${{ hashFiles('common/config/subspaces/**/pnpm-lock.yaml') }}
|
|
||||||
restore-keys: |
|
|
||||||
${{ runner.os }}-rush-store-main
|
|
||||||
${{ runner.os }}-rush-store
|
|
||||||
|
|
||||||
- name: Download changed files cache
|
|
||||||
uses: actions/download-artifact@v4
|
|
||||||
with:
|
|
||||||
name: changed-files-cache
|
|
||||||
|
|
||||||
- name: Install Dependencies
|
|
||||||
run: |
|
|
||||||
sudo apt-get update
|
|
||||||
sudo apt-get install -y libasound2-dev
|
|
||||||
node common/scripts/install-run-rush.js install --to tag:core
|
|
||||||
node common/scripts/install-run-rush.js update-autoinstaller --name plugins
|
|
||||||
node common/scripts/install-run-rush.js increment --action install -p "${{ needs.setup.outputs.cache_file }}"
|
|
||||||
|
|
||||||
- name: Increment Build
|
|
||||||
run: node common/scripts/install-run-rush.js increment --action build -p "${{ needs.setup.outputs.cache_file }}"
|
|
||||||
|
|
||||||
test:
|
|
||||||
needs: setup
|
|
||||||
runs-on: ${{ needs.setup.outputs.matrix_os }}
|
|
||||||
name: Increment Test Coverage
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
with:
|
|
||||||
fetch-depth: 1
|
|
||||||
|
|
||||||
- uses: actions/setup-node@v3
|
|
||||||
with:
|
|
||||||
node-version: ${{ needs.setup.outputs.matrix_node_version }}
|
|
||||||
|
|
||||||
- name: Cache
|
|
||||||
uses: actions/cache@v4
|
|
||||||
with:
|
|
||||||
path: |
|
|
||||||
common/temp/pnpm-local
|
|
||||||
common/temp/pnpm-store
|
|
||||||
common/temp/install-run
|
|
||||||
key: ${{ runner.os }}-rush-store-${{ hashFiles('common/config/subspaces/**/pnpm-lock.yaml') }}
|
|
||||||
restore-keys: |
|
|
||||||
${{ runner.os }}-rush-store-main
|
|
||||||
${{ runner.os }}-rush-store
|
|
||||||
|
|
||||||
- name: Download changed files cache
|
|
||||||
uses: actions/download-artifact@v4
|
|
||||||
with:
|
|
||||||
name: changed-files-cache
|
|
||||||
|
|
||||||
- name: Install Dependencies
|
|
||||||
run: |
|
|
||||||
sudo apt-get update
|
|
||||||
sudo apt-get install -y libasound2-dev
|
|
||||||
node common/scripts/install-run-rush.js install --to tag:core
|
|
||||||
node common/scripts/install-run-rush.js update-autoinstaller --name plugins
|
|
||||||
node common/scripts/install-run-rush.js increment --action install -p "${{ needs.setup.outputs.cache_file }}"
|
|
||||||
|
|
||||||
- name: Increment Test:cov
|
|
||||||
run: node common/scripts/install-run-rush.js increment --action test:cov -p "${{ needs.setup.outputs.cache_file }}"
|
|
||||||
|
|
||||||
- name: Upload coverage reports
|
|
||||||
uses: codecov/codecov-action@v4
|
|
||||||
with:
|
|
||||||
token: ${{ secrets.CODECOV_TOKEN }}
|
|
||||||
fail_ci_if_error: true
|
|
||||||
verbose: true
|
|
||||||
|
|
||||||
lint:
|
|
||||||
needs: setup
|
|
||||||
runs-on: ${{ needs.setup.outputs.matrix_os }}
|
|
||||||
name: Increment Lint
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
with:
|
|
||||||
fetch-depth: 1
|
|
||||||
|
|
||||||
- uses: actions/setup-node@v3
|
|
||||||
with:
|
|
||||||
node-version: ${{ needs.setup.outputs.matrix_node_version }}
|
|
||||||
|
|
||||||
- name: Cache
|
|
||||||
uses: actions/cache@v4
|
|
||||||
with:
|
|
||||||
path: |
|
|
||||||
common/temp/pnpm-local
|
|
||||||
common/temp/pnpm-store
|
|
||||||
common/temp/install-run
|
|
||||||
key: ${{ runner.os }}-rush-store-${{ hashFiles('common/config/subspaces/**/pnpm-lock.yaml') }}
|
|
||||||
restore-keys: |
|
|
||||||
${{ runner.os }}-rush-store-main
|
|
||||||
${{ runner.os }}-rush-store
|
|
||||||
|
|
||||||
- name: Download changed files cache
|
|
||||||
uses: actions/download-artifact@v4
|
|
||||||
with:
|
|
||||||
name: changed-files-cache
|
|
||||||
|
|
||||||
- name: Install Dependencies
|
|
||||||
run: |
|
|
||||||
sudo apt-get update
|
|
||||||
sudo apt-get install -y libasound2-dev
|
|
||||||
node common/scripts/install-run-rush.js install --to tag:core
|
|
||||||
node common/scripts/install-run-rush.js update-autoinstaller --name plugins
|
|
||||||
node common/scripts/install-run-rush.js increment --action install -p "${{ needs.setup.outputs.cache_file }}"
|
|
||||||
|
|
||||||
- name: Increment Lint
|
|
||||||
run: node common/scripts/install-run-rush.js increment --action lint -p "${{ needs.setup.outputs.cache_file }}"
|
|
||||||
|
|
||||||
ts-check:
|
|
||||||
needs: setup
|
|
||||||
runs-on: ${{ needs.setup.outputs.matrix_os }}
|
|
||||||
name: Increment TS Check
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
with:
|
|
||||||
fetch-depth: 1
|
|
||||||
|
|
||||||
- uses: actions/setup-node@v3
|
|
||||||
with:
|
|
||||||
node-version: ${{ needs.setup.outputs.matrix_node_version }}
|
|
||||||
|
|
||||||
- name: Cache
|
|
||||||
uses: actions/cache@v4
|
|
||||||
with:
|
|
||||||
path: |
|
|
||||||
common/temp/pnpm-local
|
|
||||||
common/temp/pnpm-store
|
|
||||||
common/temp/install-run
|
|
||||||
key: ${{ runner.os }}-rush-store-${{ hashFiles('common/config/subspaces/**/pnpm-lock.yaml') }}
|
|
||||||
restore-keys: |
|
|
||||||
${{ runner.os }}-rush-store-main
|
|
||||||
${{ runner.os }}-rush-store
|
|
||||||
|
|
||||||
- name: Download changed files cache
|
|
||||||
uses: actions/download-artifact@v4
|
|
||||||
with:
|
|
||||||
name: changed-files-cache
|
|
||||||
|
|
||||||
- name: Install Dependencies
|
|
||||||
run: |
|
|
||||||
sudo apt-get update
|
|
||||||
sudo apt-get install -y libasound2-dev
|
|
||||||
node common/scripts/install-run-rush.js install --to tag:core
|
|
||||||
node common/scripts/install-run-rush.js update-autoinstaller --name plugins
|
|
||||||
node common/scripts/install-run-rush.js increment --action install -p "${{ needs.setup.outputs.cache_file }}"
|
|
||||||
|
|
||||||
- name: Increment TS Check
|
|
||||||
run: node common/scripts/install-run-rush.js increment --action ts-check -p "${{ needs.setup.outputs.cache_file }}"
|
|
||||||
|
|
||||||
package-audit:
|
|
||||||
needs: setup
|
|
||||||
runs-on: ${{ needs.setup.outputs.matrix_os }}
|
|
||||||
name: Increment Package Audit
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
with:
|
|
||||||
fetch-depth: 1
|
|
||||||
|
|
||||||
- uses: actions/setup-node@v3
|
|
||||||
with:
|
|
||||||
node-version: ${{ needs.setup.outputs.matrix_node_version }}
|
|
||||||
|
|
||||||
- name: Cache
|
|
||||||
uses: actions/cache@v4
|
|
||||||
with:
|
|
||||||
path: |
|
|
||||||
common/temp/pnpm-local
|
|
||||||
common/temp/pnpm-store
|
|
||||||
common/temp/install-run
|
|
||||||
key: ${{ runner.os }}-rush-store-${{ hashFiles('common/config/subspaces/**/pnpm-lock.yaml') }}
|
|
||||||
restore-keys: |
|
|
||||||
${{ runner.os }}-rush-store-main
|
|
||||||
${{ runner.os }}-rush-store
|
|
||||||
|
|
||||||
- name: Download changed files cache
|
|
||||||
uses: actions/download-artifact@v4
|
|
||||||
with:
|
|
||||||
name: changed-files-cache
|
|
||||||
|
|
||||||
- name: Install Dependencies
|
|
||||||
run: |
|
|
||||||
sudo apt-get update
|
|
||||||
sudo apt-get install -y libasound2-dev
|
|
||||||
node common/scripts/install-run-rush.js install --to tag:core
|
|
||||||
node common/scripts/install-run-rush.js update-autoinstaller --name plugins
|
|
||||||
node common/scripts/install-run-rush.js increment --action install -p "${{ needs.setup.outputs.cache_file }}"
|
|
||||||
|
|
||||||
- name: Increment Package Audit
|
|
||||||
run: node common/scripts/install-run-rush.js increment --action package-audit -p "${{ needs.setup.outputs.cache_file }}"
|
|
||||||
72
.github/workflows/ci@main.yml
vendored
72
.github/workflows/ci@main.yml
vendored
@ -1,72 +0,0 @@
|
|||||||
# should be optimize as increment build & test
|
|
||||||
name: CI@main
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
# test only
|
|
||||||
branches: ['main',"chore/setup-ci"]
|
|
||||||
paths:
|
|
||||||
- 'github/**'
|
|
||||||
- 'idl/**'
|
|
||||||
- 'frontend/**'
|
|
||||||
- 'common/**'
|
|
||||||
- 'rush.json'
|
|
||||||
# Allows you to run this workflow manually from the Actions tab
|
|
||||||
workflow_dispatch:
|
|
||||||
jobs:
|
|
||||||
build:
|
|
||||||
strategy:
|
|
||||||
matrix:
|
|
||||||
include:
|
|
||||||
- NodeVersion: 22.16.0
|
|
||||||
NodeVersionDisplayName: 22
|
|
||||||
OS: ubuntu-latest
|
|
||||||
name: Node.js v${{ matrix.NodeVersionDisplayName }} (${{ matrix.OS }})
|
|
||||||
runs-on: ${{ matrix.OS }}
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
with:
|
|
||||||
fetch-depth: 1
|
|
||||||
|
|
||||||
- name: Config Git User
|
|
||||||
# should be turn to ci user
|
|
||||||
run: |
|
|
||||||
git config --local user.name "flow_bot"
|
|
||||||
git config --local user.email "flow_bot@bytedance.com"
|
|
||||||
|
|
||||||
- uses: actions/setup-node@v3
|
|
||||||
with:
|
|
||||||
node-version: ${{ matrix.NodeVersion }}
|
|
||||||
|
|
||||||
- name: Cache
|
|
||||||
uses: actions/cache@v4
|
|
||||||
with:
|
|
||||||
path: |
|
|
||||||
common/temp/pnpm-local
|
|
||||||
common/temp/pnpm-store
|
|
||||||
common/temp/install-run
|
|
||||||
key: ${{ runner.os }}-rush-store-main
|
|
||||||
restore-keys: |
|
|
||||||
${{ runner.os }}-rush-store-main
|
|
||||||
${{ runner.os }}-rush-store
|
|
||||||
|
|
||||||
- name: Install Dependencies
|
|
||||||
run: |
|
|
||||||
sudo apt-get update
|
|
||||||
sudo apt-get install -y libasound2-dev
|
|
||||||
node common/scripts/install-run-rush.js install
|
|
||||||
|
|
||||||
- name: Build all
|
|
||||||
run: node common/scripts/install-run-rush.js build --verbose
|
|
||||||
|
|
||||||
- name: Test:cov all
|
|
||||||
run: node common/scripts/install-run-rush.js test:cov --verbose
|
|
||||||
|
|
||||||
- name: Upload coverage reports
|
|
||||||
uses: codecov/codecov-action@v4
|
|
||||||
with:
|
|
||||||
token: ${{ secrets.CODECOV_TOKEN }}
|
|
||||||
fail_ci_if_error: true
|
|
||||||
verbose: true
|
|
||||||
|
|
||||||
- name: Lint all
|
|
||||||
run: node common/scripts/install-run-rush.js lint --verbose
|
|
||||||
45
.github/workflows/common-pr-checks.yml
vendored
45
.github/workflows/common-pr-checks.yml
vendored
@ -1,45 +0,0 @@
|
|||||||
name: PR Common Checks
|
|
||||||
on:
|
|
||||||
pull_request:
|
|
||||||
paths:
|
|
||||||
- 'github/**'
|
|
||||||
- 'idl/**'
|
|
||||||
- 'frontend/**'
|
|
||||||
- 'common/**'
|
|
||||||
- 'rush.json'
|
|
||||||
types: [opened, edited, synchronize, reopened]
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
common-checks:
|
|
||||||
name: PR Common Checks
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
with:
|
|
||||||
fetch-depth: 1
|
|
||||||
|
|
||||||
- name: Config Git User
|
|
||||||
run: |
|
|
||||||
git config --local user.name "flow_bot"
|
|
||||||
git config --local user.email "flow_bot@bytedance.com"
|
|
||||||
|
|
||||||
- uses: actions/setup-node@v3
|
|
||||||
with:
|
|
||||||
node-version: 22.16.0
|
|
||||||
|
|
||||||
- name: Install Dependencies
|
|
||||||
run: node common/scripts/install-run-rush.js install
|
|
||||||
|
|
||||||
# PR Title Format Check
|
|
||||||
- name: Check PR Title Format
|
|
||||||
if: ${{ !contains(github.event.pull_request.title, 'WIP') && !contains(github.event.pull_request.title, 'wip') }}
|
|
||||||
env:
|
|
||||||
PR_TITLE: ${{ github.event.pull_request.title }}
|
|
||||||
run: |
|
|
||||||
node common/scripts/install-run-rush.js update-autoinstaller --name rush-commitlint && \
|
|
||||||
pushd common/autoinstallers/rush-commitlint && \
|
|
||||||
echo "$PR_TITLE" | npx commitlint --config commitlint.config.js && \
|
|
||||||
popd
|
|
||||||
|
|
||||||
# Add more common checks here
|
|
||||||
# For example: file size checks, specific file format validations, etc.
|
|
||||||
2
AUTHORS
2
AUTHORS
@ -44,5 +44,3 @@ lingyibin.jason <lingyibin.jason@bytedance.com>
|
|||||||
chenchen.dabaishu <chenchen.dabaishu@bytedance.com>
|
chenchen.dabaishu <chenchen.dabaishu@bytedance.com>
|
||||||
jiangxujin <jiangxujin@bytedance.com>
|
jiangxujin <jiangxujin@bytedance.com>
|
||||||
huyongbiao <huyongbiao@bytedance.com>
|
huyongbiao <huyongbiao@bytedance.com>
|
||||||
wenming.2020 <wenming.2020@bytedance.com>
|
|
||||||
tanjizhen <tanjizhen@bytedance.com>
|
|
||||||
|
|||||||
10
Makefile
10
Makefile
@ -13,8 +13,6 @@ MYSQL_SCHEMA := ./docker/volumes/mysql/schema.sql
|
|||||||
MYSQL_INIT_SQL := ./docker/volumes/mysql/sql_init.sql
|
MYSQL_INIT_SQL := ./docker/volumes/mysql/sql_init.sql
|
||||||
ENV_FILE := ./docker/.env
|
ENV_FILE := ./docker/.env
|
||||||
STATIC_DIR := ./bin/resources/static
|
STATIC_DIR := ./bin/resources/static
|
||||||
ES_INDEX_SCHEMA := ./docker/volumes/elasticsearch/es_index_schema
|
|
||||||
ES_SETUP_SCRIPT := ./docker/volumes/elasticsearch/setup_es.sh
|
|
||||||
|
|
||||||
debug: env middleware python server
|
debug: env middleware python server
|
||||||
|
|
||||||
@ -28,7 +26,7 @@ fe:
|
|||||||
@echo "Building frontend..."
|
@echo "Building frontend..."
|
||||||
@bash $(BUILD_FE_SCRIPT)
|
@bash $(BUILD_FE_SCRIPT)
|
||||||
|
|
||||||
server: env
|
server: env
|
||||||
@if [ ! -d "$(STATIC_DIR)" ]; then \
|
@if [ ! -d "$(STATIC_DIR)" ]; then \
|
||||||
echo "Static directory '$(STATIC_DIR)' not found, building frontend..."; \
|
echo "Static directory '$(STATIC_DIR)' not found, building frontend..."; \
|
||||||
$(MAKE) fe; \
|
$(MAKE) fe; \
|
||||||
@ -86,11 +84,6 @@ atlas-hash:
|
|||||||
@echo "Rehash atlas migration files..."
|
@echo "Rehash atlas migration files..."
|
||||||
@(cd ./docker/atlas && atlas migrate hash)
|
@(cd ./docker/atlas && atlas migrate hash)
|
||||||
|
|
||||||
setup_es_index:
|
|
||||||
@echo "Setting up Elasticsearch index..."
|
|
||||||
@. $(ENV_FILE); \
|
|
||||||
bash $(ES_SETUP_SCRIPT) --index-dir $(ES_INDEX_SCHEMA) --docker-host false --es-address "$$ES_ADDR"
|
|
||||||
|
|
||||||
help:
|
help:
|
||||||
@echo "Usage: make [target]"
|
@echo "Usage: make [target]"
|
||||||
@echo ""
|
@echo ""
|
||||||
@ -110,5 +103,4 @@ help:
|
|||||||
@echo " clean - Stop the docker containers and clean volumes."
|
@echo " clean - Stop the docker containers and clean volumes."
|
||||||
@echo " python - Setup python environment."
|
@echo " python - Setup python environment."
|
||||||
@echo " atlas-hash - Rehash atlas migration files."
|
@echo " atlas-hash - Rehash atlas migration files."
|
||||||
@echo " setup_es_index - Setup elasticsearch index."
|
|
||||||
@echo " help - Show this help message."
|
@echo " help - Show this help message."
|
||||||
|
|||||||
33
README.md
33
README.md
@ -72,9 +72,8 @@ Deployment steps:
|
|||||||
# Start the service
|
# Start the service
|
||||||
cd docker
|
cd docker
|
||||||
cp .env.example .env
|
cp .env.example .env
|
||||||
docker compose --profile "*" up -d
|
docker compose --profile '*' up -d
|
||||||
```
|
```
|
||||||
After the service starts, it is normal for the `coze-minio-setup` , `coze-mysql-setup-init-sql` , and `coze-mysql-setup-schema` containers to be in an exited state (exit 0). For common startup failure issues, **please refer to the [FAQ](https://github.com/coze-dev/coze-studio/wiki/9.-FAQ)**.
|
|
||||||
4. After starting the service, you can open Coze Studio by accessing `http://localhost:8888/` through your browser.
|
4. After starting the service, you can open Coze Studio by accessing `http://localhost:8888/` through your browser.
|
||||||
|
|
||||||
|
|
||||||
@ -84,7 +83,7 @@ Deployment steps:
|
|||||||
* [Model Configuration](https://github.com/coze-dev/coze-studio/wiki/3.-Model-configuration): Before deploying the open-source version of Coze Studio, you must configure the model service. Otherwise, you cannot select models when building agents, workflows, and apps.
|
* [Model Configuration](https://github.com/coze-dev/coze-studio/wiki/3.-Model-configuration): Before deploying the open-source version of Coze Studio, you must configure the model service. Otherwise, you cannot select models when building agents, workflows, and apps.
|
||||||
* [Plugin Configuration](https://github.com/coze-dev/coze-studio/wiki/4.-Plugin-Configuration): To use official plugins from the plugin store, you must first configure the plugins and add the authentication keys for third-party services.
|
* [Plugin Configuration](https://github.com/coze-dev/coze-studio/wiki/4.-Plugin-Configuration): To use official plugins from the plugin store, you must first configure the plugins and add the authentication keys for third-party services.
|
||||||
* [Basic Component Configuration](https://github.com/coze-dev/coze-studio/wiki/5.-Basic-component-configuration): Learn how to configure components such as image uploaders to use functions like image uploading in Coze Studio .
|
* [Basic Component Configuration](https://github.com/coze-dev/coze-studio/wiki/5.-Basic-component-configuration): Learn how to configure components such as image uploaders to use functions like image uploading in Coze Studio .
|
||||||
* [API Reference](https://github.com/coze-dev/coze-studio/wiki/6.-API-Reference): The Coze Studio Community Edition API and Chat SDK are authenticated using Personal Access Token, providing APIs for conversations and workflows.
|
* [API Reference](https://github.com/coze-dev/coze-studio/wiki/6.-API-Reference): Unlike the commercial edition, the open-source version of Coze Studio only supports personal access token (PAT) authentication and supports APIs related to chat and workflows.
|
||||||
* [Development Guidelines](https://github.com/coze-dev/coze-studio/wiki/7.-Development-Standards):
|
* [Development Guidelines](https://github.com/coze-dev/coze-studio/wiki/7.-Development-Standards):
|
||||||
* [Project Architecture](https://github.com/coze-dev/coze-studio/wiki/7.-Development-Standards#project-architecture): Learn about the technical architecture and core components of the open-source version of Coze Studio.
|
* [Project Architecture](https://github.com/coze-dev/coze-studio/wiki/7.-Development-Standards#project-architecture): Learn about the technical architecture and core components of the open-source version of Coze Studio.
|
||||||
* [Code Development and Testing](https://github.com/coze-dev/coze-studio/wiki/7.-Development-Standards#code-development-and-testing): Learn how to perform secondary development and testing based on the open-source version of Coze Studio.
|
* [Code Development and Testing](https://github.com/coze-dev/coze-studio/wiki/7.-Development-Standards#code-development-and-testing): Learn how to perform secondary development and testing based on the open-source version of Coze Studio.
|
||||||
@ -108,33 +107,15 @@ We welcome community contributions. For contribution guidelines, please refer to
|
|||||||
## Security and privacy
|
## Security and privacy
|
||||||
If you discover potential security issues in the project, or believe you may have found a security issue, please notify the ByteDance security team through our [security center](https://security.bytedance.com/src) or [vulnerability reporting mailbox](https://code.byted.org/flowdevops/cozeloop/blob/feat/release/sec@bytedance.com).
|
If you discover potential security issues in the project, or believe you may have found a security issue, please notify the ByteDance security team through our [security center](https://security.bytedance.com/src) or [vulnerability reporting mailbox](https://code.byted.org/flowdevops/cozeloop/blob/feat/release/sec@bytedance.com).
|
||||||
Please **do not** create public GitHub Issues.
|
Please **do not** create public GitHub Issues.
|
||||||
## Join Community
|
## Join the community
|
||||||
|
Scan the QR code below using the Lark mobile app to join the Coze Studio technical exchange group.
|
||||||
We are committed to building an open and friendly developer community. All developers interested in AI Agent development are welcome to join us!
|
|
||||||
|
|
||||||
### 🐛 Issue Reports & Feature Requests
|
|
||||||
To efficiently track and resolve issues while ensuring transparency and collaboration, we recommend participating through:
|
|
||||||
- **GitHub Issues**: [Submit bug reports or feature requests](https://github.com/coze-dev/coze-studio/issues)
|
|
||||||
- **Pull Requests**: [Contribute code or documentation improvements](https://github.com/coze-dev/coze-studio/pulls)
|
|
||||||
|
|
||||||
### 💬 Technical Discussion & Communication
|
|
||||||
Join our technical discussion groups to share experiences with other developers and stay updated with the latest project developments:
|
|
||||||
|
|
||||||
**Feishu Group Chat**
|
|
||||||
Scan the QR code below with Feishu mobile app to join:
|
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
**Discord Server**
|
|
||||||
Click to join: [Coze Community](https://discord.gg/sTVN9EVS4B)
|
|
||||||
|
|
||||||
**Telegram Group**
|
|
||||||
Click to join: Telegram Group [Coze](https://t.me/+pP9CkPnomDA0Mjgx)
|
|
||||||
|
|
||||||
## Acknowledgments
|
## Acknowledgments
|
||||||
Thank you to all the developers and community members who have contributed to the Coze Studio project. Special thanks:
|
Thank you to all the developers and community members who have contributed to the Coze Studio project. Special thanks:
|
||||||
|
|
||||||
* The [Eino](https://github.com/cloudwego/eino) framework team - providing powerful support for Coze Studio's agent and workflow runtime engines, model abstractions and implementations, and knowledge base indexing and retrieval
|
* LLM integration support provided by the Eino framework team
|
||||||
* The [FlowGram](https://github.com/bytedance/flowgram.ai) team - providing a high-quality workflow building engine for Coze Studio's frontend workflow canvas editor
|
* High-performance framework developed by the Cloudwego team
|
||||||
* The [Hertz](https://github.com/cloudwego/hertz) team - Go HTTP framework with high-performance and strong-extensibility for building micro-services
|
* High-quality workflow building engine developed by the [FlowGram](https://github.com/bytedance/flowgram.ai) team
|
||||||
* All users who participated in testing and feedback
|
* All users who participated in testing and feedback
|
||||||
@ -25,7 +25,6 @@
|
|||||||
Coze Studio,源自服务了上万家企业、数百万开发者的「扣子开发平台」,我们将它的核心引擎完全开放。它是一个一站式的 AI Agent 可视化开发工具,让 AI Agent 的创建、调试和部署变得前所未有的简单。通过 Coze Studio 提供的可视化设计与编排工具,开发者可以通过零代码或低代码的方式,快速打造和调试智能体、应用和工作流,实现强大的 AI 应用开发和更多定制化业务逻辑,是构建低代码 AI 产品的理想选择。Coze Studio 致力于降低 AI Agent 开发与应用门槛,鼓励社区共建和分享交流,助你在 AI 领域进行更深层次的探索与实践。
|
Coze Studio,源自服务了上万家企业、数百万开发者的「扣子开发平台」,我们将它的核心引擎完全开放。它是一个一站式的 AI Agent 可视化开发工具,让 AI Agent 的创建、调试和部署变得前所未有的简单。通过 Coze Studio 提供的可视化设计与编排工具,开发者可以通过零代码或低代码的方式,快速打造和调试智能体、应用和工作流,实现强大的 AI 应用开发和更多定制化业务逻辑,是构建低代码 AI 产品的理想选择。Coze Studio 致力于降低 AI Agent 开发与应用门槛,鼓励社区共建和分享交流,助你在 AI 领域进行更深层次的探索与实践。
|
||||||
|
|
||||||
Coze Studio 的后端采用 Golang 开发,前端使用 React + TypeScript,整体基于微服务架构并遵循领域驱动设计(DDD)原则构建。为开发者提供一个高性能、高扩展性、易于二次开发的底层框架,助力开发者应对复杂的业务需求。
|
Coze Studio 的后端采用 Golang 开发,前端使用 React + TypeScript,整体基于微服务架构并遵循领域驱动设计(DDD)原则构建。为开发者提供一个高性能、高扩展性、易于二次开发的底层框架,助力开发者应对复杂的业务需求。
|
||||||
|
|
||||||
## 功能清单
|
## 功能清单
|
||||||
| **功能模块** | **功能点** |
|
| **功能模块** | **功能点** |
|
||||||
| --- | --- |
|
| --- | --- |
|
||||||
@ -72,10 +71,8 @@ Coze Studio 的后端采用 Golang 开发,前端使用 React + TypeScript,
|
|||||||
# 启动服务
|
# 启动服务
|
||||||
cd docker
|
cd docker
|
||||||
cp .env.example .env
|
cp .env.example .env
|
||||||
docker compose --profile "*" up -d
|
docker compose --profile '*' up -d
|
||||||
```
|
```
|
||||||
服务启动之后`coze-minio-setup`、`coze-mysql-setup-init-sql`、`coze-mysql-setup-schema` 这几个容器处于退出状态(exit 0),是正常现象。**启动失败常见问题可参考[常见问题](https://github.com/coze-dev/coze-studio/wiki/9.-%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98)**。
|
|
||||||
|
|
||||||
4. 启动服务后,通过浏览器访问 `http://localhost:8888/` 即可打开 Coze Studio。
|
4. 启动服务后,通过浏览器访问 `http://localhost:8888/` 即可打开 Coze Studio。
|
||||||
|
|
||||||
## 开发指南
|
## 开发指南
|
||||||
@ -84,7 +81,7 @@ Coze Studio 的后端采用 Golang 开发,前端使用 React + TypeScript,
|
|||||||
* [模型配置](https://github.com/coze-dev/coze-studio/wiki/3.-模型配置):部署 Coze Studio 开源版之前,必须配置模型服务,否则无法在搭建智能体、工作流和应用时选择模型。
|
* [模型配置](https://github.com/coze-dev/coze-studio/wiki/3.-模型配置):部署 Coze Studio 开源版之前,必须配置模型服务,否则无法在搭建智能体、工作流和应用时选择模型。
|
||||||
* [插件配置](https://github.com/coze-dev/coze-studio/wiki/4.-插件配置):如需使用插件商店中的官方插件,必须先配置插件,添加第三方服务的鉴权秘钥。
|
* [插件配置](https://github.com/coze-dev/coze-studio/wiki/4.-插件配置):如需使用插件商店中的官方插件,必须先配置插件,添加第三方服务的鉴权秘钥。
|
||||||
* [基础组件配置](https://github.com/coze-dev/coze-studio/wiki/5.-基础组件配置):了解如何配置图片上传等组件,以便在 Coze Studio 中使用上传图片等功能。
|
* [基础组件配置](https://github.com/coze-dev/coze-studio/wiki/5.-基础组件配置):了解如何配置图片上传等组件,以便在 Coze Studio 中使用上传图片等功能。
|
||||||
* [API 参考](https://github.com/coze-dev/coze-studio/wiki/6.-API-参考):Coze Studio 社区版 API 和 Chat SDK 通过个人访问令牌鉴权,提供对话和工作流相关 API。
|
* [API 参考](https://github.com/coze-dev/coze-studio/wiki/6.-API-参考):和商业版不同,Coze Studio 开源版仅支持个人访问秘钥(PAT)鉴权,并支持对话和工作流相关 API。
|
||||||
* [开发规范](https://github.com/coze-dev/coze-studio/wiki/7.-开发规范):
|
* [开发规范](https://github.com/coze-dev/coze-studio/wiki/7.-开发规范):
|
||||||
* [项目架构](https://github.com/coze-dev/coze-studio/wiki/7.-%E5%BC%80%E5%8F%91%E8%A7%84%E8%8C%83#%E9%A1%B9%E7%9B%AE%E6%9E%B6%E6%9E%84):了解 Coze Studio 开源版的技术架构与核心组件。
|
* [项目架构](https://github.com/coze-dev/coze-studio/wiki/7.-%E5%BC%80%E5%8F%91%E8%A7%84%E8%8C%83#%E9%A1%B9%E7%9B%AE%E6%9E%B6%E6%9E%84):了解 Coze Studio 开源版的技术架构与核心组件。
|
||||||
* [代码开发与测试](https://github.com/coze-dev/coze-studio/wiki/7.-%E5%BC%80%E5%8F%91%E8%A7%84%E8%8C%83#%E4%BB%A3%E7%A0%81%E5%BC%80%E5%8F%91%E4%B8%8E%E6%B5%8B%E8%AF%95):了解如何基于 Coze Studio 开源版进行二次开发与测试。
|
* [代码开发与测试](https://github.com/coze-dev/coze-studio/wiki/7.-%E5%BC%80%E5%8F%91%E8%A7%84%E8%8C%83#%E4%BB%A3%E7%A0%81%E5%BC%80%E5%8F%91%E4%B8%8E%E6%B5%8B%E8%AF%95):了解如何基于 Coze Studio 开源版进行二次开发与测试。
|
||||||
@ -109,32 +106,14 @@ Coze Studio 的后端采用 Golang 开发,前端使用 React + TypeScript,
|
|||||||
如果你在该项目中发现潜在的安全问题,或你认为可能发现了安全问题,请通过我们的[安全中心](https://security.bytedance.com/src) 或[漏洞报告邮箱](https://code.byted.org/flowdevops/cozeloop/blob/feat/release/sec@bytedance.com)通知字节跳动安全团队。
|
如果你在该项目中发现潜在的安全问题,或你认为可能发现了安全问题,请通过我们的[安全中心](https://security.bytedance.com/src) 或[漏洞报告邮箱](https://code.byted.org/flowdevops/cozeloop/blob/feat/release/sec@bytedance.com)通知字节跳动安全团队。
|
||||||
请**不要**创建公开的 GitHub Issue。
|
请**不要**创建公开的 GitHub Issue。
|
||||||
## 加入社区
|
## 加入社区
|
||||||
|
飞书移动端扫描以下二维码,加入 Coze Studio 技术交流群。
|
||||||
我们致力于构建一个开放、友好的开发者社区,欢迎所有对 AI Agent 开发感兴趣的开发者加入我们!
|
|
||||||
|
|
||||||
### 🐛 问题反馈与功能建议
|
|
||||||
为了更高效地跟踪和解决问题,保证信息透明和便于协同,我们推荐通过以下方式参与:
|
|
||||||
- **GitHub Issues**:[提交 Bug 报告或功能请求](https://github.com/coze-dev/coze-studio/issues)
|
|
||||||
- **Pull Requests**:[贡献代码或文档改进](https://github.com/coze-dev/coze-studio/pulls)
|
|
||||||
|
|
||||||
### 💬 技术交流与讨论
|
|
||||||
加入我们的技术交流群,与其他开发者分享经验、获取项目最新动态:
|
|
||||||
|
|
||||||
**飞书群聊**
|
|
||||||
使用飞书移动端扫描下方二维码加入:
|
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
**Discord 服务器**
|
|
||||||
点击加入:[Coze Community](https://discord.gg/sTVN9EVS4B)
|
|
||||||
|
|
||||||
**Telegram 群组**
|
|
||||||
点击加入:Telegram Group [Coze](https://t.me/+pP9CkPnomDA0Mjgx)
|
|
||||||
|
|
||||||
## 致谢
|
## 致谢
|
||||||
感谢所有为 Coze Studio 项目做出贡献的开发者和社区成员。特别感谢:
|
感谢所有为 Coze Studio 项目做出贡献的开发者和社区成员。特别感谢:
|
||||||
|
|
||||||
* [Eino](https://github.com/cloudwego/eino) 框架团队 - 为 Coze Studio 的智能体和工作流运行时、模型抽象封装、知识库索引构建和检索提供了强大的支持
|
* Eino 框架团队提供的 LLM 集成支持
|
||||||
* [FlowGram](https://github.com/bytedance/flowgram.ai) 团队 - 为 Coze Studio 的工作流画布编辑页提供了高质量的流程搭建引擎
|
* Cloudwego 团队开发的高性能框架
|
||||||
* [Hertz](https://github.com/cloudwego/hertz) 团队 - 高性能、强扩展性的 Go HTTP 框架,用于构建微服务
|
* [FlowGram](https://github.com/bytedance/flowgram.ai) 团队开发的高质量流程搭建引擎
|
||||||
* 所有参与测试和反馈的用户
|
* 所有参与测试和反馈的用户
|
||||||
@ -31,7 +31,7 @@ WORKDIR /app
|
|||||||
# Install runtime dependencies for Go app and base for Python
|
# Install runtime dependencies for Go app and base for Python
|
||||||
# pax-utils for scanelf, python3 for running Python, python3-dev for headers/shared libs
|
# pax-utils for scanelf, python3 for running Python, python3-dev for headers/shared libs
|
||||||
# bind-tools for nslookup etc., file for debugging file types
|
# bind-tools for nslookup etc., file for debugging file types
|
||||||
RUN apk add --no-cache pax-utils python3 python3-dev bind-tools file deno curl
|
RUN apk add --no-cache pax-utils python3 python3-dev bind-tools file deno
|
||||||
|
|
||||||
# Install Python build dependencies, create venv, install packages, then remove build deps
|
# Install Python build dependencies, create venv, install packages, then remove build deps
|
||||||
RUN apk add --no-cache --virtual .python-build-deps build-base py3-pip git && \
|
RUN apk add --no-cache --virtual .python-build-deps build-base py3-pip git && \
|
||||||
@ -81,9 +81,6 @@ EXPOSE 8888
|
|||||||
|
|
||||||
# Use a script to start both applications
|
# Use a script to start both applications
|
||||||
COPY backend/script/bootstrap.sh /app/bootstrap.sh
|
COPY backend/script/bootstrap.sh /app/bootstrap.sh
|
||||||
COPY docker/volumes/elasticsearch/setup_es.sh /app/setup_es.sh
|
RUN chmod +x /app/bootstrap.sh
|
||||||
COPY docker/volumes/elasticsearch/es_index_schema /app/es_index_schemas
|
|
||||||
|
|
||||||
RUN chmod +x /app/bootstrap.sh /app/setup_es.sh
|
|
||||||
|
|
||||||
CMD ["/app/bootstrap.sh"]
|
CMD ["/app/bootstrap.sh"]
|
||||||
|
|||||||
@ -60,7 +60,6 @@ import (
|
|||||||
"github.com/coze-dev/coze-studio/backend/pkg/lang/conv"
|
"github.com/coze-dev/coze-studio/backend/pkg/lang/conv"
|
||||||
"github.com/coze-dev/coze-studio/backend/pkg/lang/ptr"
|
"github.com/coze-dev/coze-studio/backend/pkg/lang/ptr"
|
||||||
"github.com/coze-dev/coze-studio/backend/pkg/logs"
|
"github.com/coze-dev/coze-studio/backend/pkg/logs"
|
||||||
"github.com/coze-dev/coze-studio/backend/pkg/safego"
|
|
||||||
"github.com/coze-dev/coze-studio/backend/pkg/taskgroup"
|
"github.com/coze-dev/coze-studio/backend/pkg/taskgroup"
|
||||||
"github.com/coze-dev/coze-studio/backend/types/consts"
|
"github.com/coze-dev/coze-studio/backend/types/consts"
|
||||||
"github.com/coze-dev/coze-studio/backend/types/errno"
|
"github.com/coze-dev/coze-studio/backend/types/errno"
|
||||||
@ -184,19 +183,18 @@ func (a *APPApplicationService) DraftProjectDelete(ctx context.Context, req *pro
|
|||||||
logs.CtxErrorf(ctx, "publish project '%d' failed, err=%v", req.ProjectID, err)
|
logs.CtxErrorf(ctx, "publish project '%d' failed, err=%v", req.ProjectID, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
safego.Go(ctx, func() {
|
err = a.deleteAPPResources(ctx, req.ProjectID)
|
||||||
// When an app is deleted, resource deletion is currently handled as a weak dependency, meaning some resources might not be deleted, but they will be inaccessible to the user.
|
if err != nil {
|
||||||
// TODO:: Application resources need to check the deletion status of the application
|
logs.CtxErrorf(ctx, "delete app '%d' resources failed, err=%v", req.ProjectID, err)
|
||||||
a.deleteAPPResources(ctx, req.ProjectID)
|
}
|
||||||
})
|
|
||||||
|
|
||||||
resp = &projectAPI.DraftProjectDeleteResponse{}
|
resp = &projectAPI.DraftProjectDeleteResponse{}
|
||||||
|
|
||||||
return resp, nil
|
return resp, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a *APPApplicationService) deleteAPPResources(ctx context.Context, appID int64) {
|
func (a *APPApplicationService) deleteAPPResources(ctx context.Context, appID int64) (err error) {
|
||||||
err := plugin.PluginApplicationSVC.DeleteAPPAllPlugins(ctx, appID)
|
err = plugin.PluginApplicationSVC.DeleteAPPAllPlugins(ctx, appID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logs.CtxErrorf(ctx, "delete app '%d' plugins failed, err=%v", appID, err)
|
logs.CtxErrorf(ctx, "delete app '%d' plugins failed, err=%v", appID, err)
|
||||||
}
|
}
|
||||||
@ -220,6 +218,8 @@ func (a *APPApplicationService) deleteAPPResources(ctx context.Context, appID in
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
logs.CtxErrorf(ctx, "delete app '%d' workflow failed, err=%v", appID, err)
|
logs.CtxErrorf(ctx, "delete app '%d' workflow failed, err=%v", appID, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a *APPApplicationService) DraftProjectUpdate(ctx context.Context, req *projectAPI.DraftProjectUpdateRequest) (resp *projectAPI.DraftProjectUpdateResponse, err error) {
|
func (a *APPApplicationService) DraftProjectUpdate(ctx context.Context, req *projectAPI.DraftProjectUpdateRequest) (resp *projectAPI.DraftProjectUpdateResponse, err error) {
|
||||||
|
|||||||
@ -140,7 +140,7 @@ func (c *ConversationApplicationService) CreateConversation(ctx context.Context,
|
|||||||
Id: conversationData.ID,
|
Id: conversationData.ID,
|
||||||
LastSectionID: &conversationData.SectionID,
|
LastSectionID: &conversationData.SectionID,
|
||||||
ConnectorID: &conversationData.ConnectorID,
|
ConnectorID: &conversationData.ConnectorID,
|
||||||
CreatedAt: conversationData.CreatedAt / 1000,
|
CreatedAt: conversationData.CreatedAt,
|
||||||
}
|
}
|
||||||
return resp, nil
|
return resp, nil
|
||||||
}
|
}
|
||||||
@ -176,7 +176,7 @@ func (c *ConversationApplicationService) ListConversation(ctx context.Context, r
|
|||||||
Id: conv.ID,
|
Id: conv.ID,
|
||||||
LastSectionID: &conv.SectionID,
|
LastSectionID: &conv.SectionID,
|
||||||
ConnectorID: &conv.ConnectorID,
|
ConnectorID: &conv.ConnectorID,
|
||||||
CreatedAt: conv.CreatedAt / 1000,
|
CreatedAt: conv.CreatedAt,
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
@ -299,7 +299,6 @@ func buildARSM2ApiMessage(chunk *entity.AgentRunResponse) []byte {
|
|||||||
MetaData: chunkMessageItem.Ext,
|
MetaData: chunkMessageItem.Ext,
|
||||||
ChatID: strconv.FormatInt(chunkMessageItem.RunID, 10),
|
ChatID: strconv.FormatInt(chunkMessageItem.RunID, 10),
|
||||||
ReasoningContent: chunkMessageItem.ReasoningContent,
|
ReasoningContent: chunkMessageItem.ReasoningContent,
|
||||||
CreatedAt: ptr.Of(chunkMessageItem.CreatedAt / 1000),
|
|
||||||
}
|
}
|
||||||
|
|
||||||
mCM, _ := json.Marshal(chunkMessage)
|
mCM, _ := json.Marshal(chunkMessage)
|
||||||
|
|||||||
@ -110,8 +110,8 @@ func (m *OpenapiMessageApplication) buildMessageListResponse(ctx context.Context
|
|||||||
Content: content,
|
Content: content,
|
||||||
ContentType: string(dm.ContentType),
|
ContentType: string(dm.ContentType),
|
||||||
SectionID: strconv.FormatInt(dm.SectionID, 10),
|
SectionID: strconv.FormatInt(dm.SectionID, 10),
|
||||||
CreatedAt: dm.CreatedAt / 1000,
|
CreatedAt: dm.CreatedAt,
|
||||||
UpdatedAt: dm.UpdatedAt / 1000,
|
UpdatedAt: dm.UpdatedAt,
|
||||||
ChatID: dm.RunID,
|
ChatID: dm.RunID,
|
||||||
MetaData: dm.Ext,
|
MetaData: dm.Ext,
|
||||||
}
|
}
|
||||||
|
|||||||
@ -26,7 +26,6 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/cloudwego/eino-ext/components/embedding/ark"
|
"github.com/cloudwego/eino-ext/components/embedding/ark"
|
||||||
ollamaEmb "github.com/cloudwego/eino-ext/components/embedding/ollama"
|
|
||||||
"github.com/cloudwego/eino-ext/components/embedding/openai"
|
"github.com/cloudwego/eino-ext/components/embedding/openai"
|
||||||
ao "github.com/cloudwego/eino-ext/components/model/ark"
|
ao "github.com/cloudwego/eino-ext/components/model/ark"
|
||||||
"github.com/cloudwego/eino-ext/components/model/deepseek"
|
"github.com/cloudwego/eino-ext/components/model/deepseek"
|
||||||
@ -112,9 +111,6 @@ func InitService(c *ServiceComponents) (*KnowledgeApplicationService, error) {
|
|||||||
case "ve":
|
case "ve":
|
||||||
ocrAK := os.Getenv("VE_OCR_AK")
|
ocrAK := os.Getenv("VE_OCR_AK")
|
||||||
ocrSK := os.Getenv("VE_OCR_SK")
|
ocrSK := os.Getenv("VE_OCR_SK")
|
||||||
if ocrAK == "" || ocrSK == "" {
|
|
||||||
logs.Warnf("[ve_ocr] ak / sk not configured, ocr might not work well")
|
|
||||||
}
|
|
||||||
inst := visual.NewInstance()
|
inst := visual.NewInstance()
|
||||||
inst.Client.SetAccessKey(ocrAK)
|
inst.Client.SetAccessKey(ocrAK)
|
||||||
inst.Client.SetSecretKey(ocrSK)
|
inst.Client.SetSecretKey(ocrSK)
|
||||||
@ -350,27 +346,6 @@ func getEmbedding(ctx context.Context) (embedding.Embedder, error) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("init ark embedding client failed, err=%w", err)
|
return nil, fmt.Errorf("init ark embedding client failed, err=%w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
case "ollama":
|
|
||||||
var (
|
|
||||||
ollamaEmbeddingBaseURL = os.Getenv("OLLAMA_EMBEDDING_BASE_URL")
|
|
||||||
ollamaEmbeddingModel = os.Getenv("OLLAMA_EMBEDDING_MODEL")
|
|
||||||
ollamaEmbeddingDims = os.Getenv("OLLAMA_EMBEDDING_DIMS")
|
|
||||||
)
|
|
||||||
|
|
||||||
dims, err := strconv.ParseInt(ollamaEmbeddingDims, 10, 64)
|
|
||||||
if err != nil {
|
|
||||||
return nil, fmt.Errorf("init ollama embedding dims failed, err=%w", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
emb, err = wrap.NewOllamaEmbedder(ctx, &ollamaEmb.EmbeddingConfig{
|
|
||||||
BaseURL: ollamaEmbeddingBaseURL,
|
|
||||||
Model: ollamaEmbeddingModel,
|
|
||||||
}, dims)
|
|
||||||
if err != nil {
|
|
||||||
return nil, fmt.Errorf("init ollama embedding failed, err=%w", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return nil, fmt.Errorf("init knowledge embedding failed, type not configured")
|
return nil, fmt.Errorf("init knowledge embedding failed, type not configured")
|
||||||
}
|
}
|
||||||
|
|||||||
@ -438,7 +438,7 @@ func (k *KnowledgeApplicationService) GetDocumentProgress(ctx context.Context, r
|
|||||||
DocumentID: domainResp.ProgressList[i].ID,
|
DocumentID: domainResp.ProgressList[i].ID,
|
||||||
Progress: int32(domainResp.ProgressList[i].Progress),
|
Progress: int32(domainResp.ProgressList[i].Progress),
|
||||||
Status: convertDocumentStatus2Model(domainResp.ProgressList[i].Status),
|
Status: convertDocumentStatus2Model(domainResp.ProgressList[i].Status),
|
||||||
StatusDescript: &domainResp.ProgressList[i].StatusMsg,
|
StatusDescript: ptr.Of(convertDocumentStatus2Model(domainResp.ProgressList[i].Status).String()),
|
||||||
DocumentName: domainResp.ProgressList[i].Name,
|
DocumentName: domainResp.ProgressList[i].Name,
|
||||||
RemainingTime: &domainResp.ProgressList[i].RemainingSec,
|
RemainingTime: &domainResp.ProgressList[i].RemainingSec,
|
||||||
Size: &domainResp.ProgressList[i].Size,
|
Size: &domainResp.ProgressList[i].Size,
|
||||||
|
|||||||
@ -18,12 +18,9 @@ package plugin
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"strconv"
|
|
||||||
"strings"
|
|
||||||
|
|
||||||
"gorm.io/gorm"
|
"gorm.io/gorm"
|
||||||
|
|
||||||
"github.com/coze-dev/coze-studio/backend/domain/plugin/conf"
|
|
||||||
pluginConf "github.com/coze-dev/coze-studio/backend/domain/plugin/conf"
|
pluginConf "github.com/coze-dev/coze-studio/backend/domain/plugin/conf"
|
||||||
"github.com/coze-dev/coze-studio/backend/domain/plugin/repository"
|
"github.com/coze-dev/coze-studio/backend/domain/plugin/repository"
|
||||||
"github.com/coze-dev/coze-studio/backend/domain/plugin/service"
|
"github.com/coze-dev/coze-studio/backend/domain/plugin/service"
|
||||||
@ -31,9 +28,6 @@ import (
|
|||||||
user "github.com/coze-dev/coze-studio/backend/domain/user/service"
|
user "github.com/coze-dev/coze-studio/backend/domain/user/service"
|
||||||
"github.com/coze-dev/coze-studio/backend/infra/contract/idgen"
|
"github.com/coze-dev/coze-studio/backend/infra/contract/idgen"
|
||||||
"github.com/coze-dev/coze-studio/backend/infra/contract/storage"
|
"github.com/coze-dev/coze-studio/backend/infra/contract/storage"
|
||||||
"github.com/coze-dev/coze-studio/backend/pkg/errorx"
|
|
||||||
"github.com/coze-dev/coze-studio/backend/pkg/lang/slices"
|
|
||||||
"github.com/coze-dev/coze-studio/backend/types/errno"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type ServiceComponents struct {
|
type ServiceComponents struct {
|
||||||
@ -74,11 +68,6 @@ func InitService(ctx context.Context, components *ServiceComponents) (*PluginApp
|
|||||||
OAuthRepo: oauthRepo,
|
OAuthRepo: oauthRepo,
|
||||||
})
|
})
|
||||||
|
|
||||||
err = checkIDExist(ctx, pluginSVC)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
PluginApplicationSVC.DomainSVC = pluginSVC
|
PluginApplicationSVC.DomainSVC = pluginSVC
|
||||||
PluginApplicationSVC.eventbus = components.EventBus
|
PluginApplicationSVC.eventbus = components.EventBus
|
||||||
PluginApplicationSVC.oss = components.OSS
|
PluginApplicationSVC.oss = components.OSS
|
||||||
@ -88,51 +77,3 @@ func InitService(ctx context.Context, components *ServiceComponents) (*PluginApp
|
|||||||
|
|
||||||
return PluginApplicationSVC, nil
|
return PluginApplicationSVC, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func checkIDExist(ctx context.Context, pluginService service.PluginService) error {
|
|
||||||
pluginProducts := conf.GetAllPluginProducts()
|
|
||||||
|
|
||||||
pluginIDs := make([]int64, 0, len(pluginProducts))
|
|
||||||
var toolIDs []int64
|
|
||||||
for _, p := range pluginProducts {
|
|
||||||
pluginIDs = append(pluginIDs, p.Info.ID)
|
|
||||||
toolIDs = append(toolIDs, p.ToolIDs...)
|
|
||||||
}
|
|
||||||
|
|
||||||
pluginInfos, err := pluginService.MGetDraftPlugins(ctx, pluginIDs)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
if len(pluginInfos) > 0 {
|
|
||||||
conflictsIDs := make([]int64, 0, len(pluginInfos))
|
|
||||||
for _, p := range pluginInfos {
|
|
||||||
conflictsIDs = append(conflictsIDs, p.ID)
|
|
||||||
}
|
|
||||||
|
|
||||||
return errorx.New(errno.ErrPluginIDExist,
|
|
||||||
errorx.KV("plugin_id", strings.Join(slices.Transform(conflictsIDs, func(id int64) string {
|
|
||||||
return strconv.FormatInt(id, 10)
|
|
||||||
}), ",")),
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
tools, err := pluginService.MGetDraftTools(ctx, toolIDs)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
if len(tools) > 0 {
|
|
||||||
conflictsIDs := make([]int64, 0, len(tools))
|
|
||||||
for _, t := range tools {
|
|
||||||
conflictsIDs = append(conflictsIDs, t.ID)
|
|
||||||
}
|
|
||||||
|
|
||||||
return errorx.New(errno.ErrToolIDExist,
|
|
||||||
errorx.KV("tool_id", strings.Join(slices.Transform(conflictsIDs, func(id int64) string {
|
|
||||||
return strconv.FormatInt(id, 10)
|
|
||||||
}), ",")),
|
|
||||||
)
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|||||||
@ -76,38 +76,28 @@ func (s *SearchApplicationService) GetDraftIntelligenceList(ctx context.Context,
|
|||||||
intelligenceDataList := make([]*intelligence.IntelligenceData, len(searchResp.Data))
|
intelligenceDataList := make([]*intelligence.IntelligenceData, len(searchResp.Data))
|
||||||
|
|
||||||
logs.CtxDebugf(ctx, "[GetDraftIntelligenceList] searchResp.Data: %v", conv.DebugJsonToStr(searchResp.Data))
|
logs.CtxDebugf(ctx, "[GetDraftIntelligenceList] searchResp.Data: %v", conv.DebugJsonToStr(searchResp.Data))
|
||||||
if len(searchResp.Data) > 1 {
|
|
||||||
for idx := range searchResp.Data[1:] {
|
|
||||||
index := idx + 1
|
|
||||||
data := searchResp.Data[index]
|
|
||||||
tasks.Go(func() error {
|
|
||||||
info, err := s.packIntelligenceData(ctx, data)
|
|
||||||
if err != nil {
|
|
||||||
logs.CtxErrorf(ctx, "[packIntelligenceData] failed id %v, type %d , name %s, err: %v", data.ID, data.Type, data.GetName(), err)
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
lock.Lock()
|
for idx := range searchResp.Data {
|
||||||
defer lock.Unlock()
|
data := searchResp.Data[idx]
|
||||||
intelligenceDataList[index] = info
|
index := idx
|
||||||
return nil
|
tasks.Go(func() error {
|
||||||
})
|
info, err := s.packIntelligenceData(ctx, data)
|
||||||
}
|
if err != nil {
|
||||||
}
|
logs.CtxErrorf(ctx, "[packIntelligenceData] failed id %v, type %d , name %s, err: %v", data.ID, data.Type, data.GetName(), err)
|
||||||
if len(searchResp.Data) != 0 {
|
|
||||||
info, err := s.packIntelligenceData(ctx, searchResp.Data[0])
|
return err
|
||||||
if err != nil {
|
}
|
||||||
logs.CtxErrorf(ctx, "[packIntelligenceData] failed id %v, type %d , name %s, err: %v", searchResp.Data[0].ID, searchResp.Data[0].Type, searchResp.Data[0].GetName(), err)
|
|
||||||
return nil, err
|
lock.Lock()
|
||||||
}
|
defer lock.Unlock()
|
||||||
lock.Lock()
|
intelligenceDataList[index] = info
|
||||||
intelligenceDataList[0] = info
|
return nil
|
||||||
lock.Unlock()
|
})
|
||||||
}
|
|
||||||
err = tasks.Wait()
|
s.packIntelligenceData(ctx, data)
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_ = tasks.Wait()
|
||||||
filterDataList := make([]*intelligence.IntelligenceData, 0)
|
filterDataList := make([]*intelligence.IntelligenceData, 0)
|
||||||
for _, data := range intelligenceDataList {
|
for _, data := range intelligenceDataList {
|
||||||
if data != nil {
|
if data != nil {
|
||||||
|
|||||||
@ -86,39 +86,25 @@ func (s *SearchApplicationService) LibraryResourceList(ctx context.Context, req
|
|||||||
lock := sync.Mutex{}
|
lock := sync.Mutex{}
|
||||||
tasks := taskgroup.NewUninterruptibleTaskGroup(ctx, 10)
|
tasks := taskgroup.NewUninterruptibleTaskGroup(ctx, 10)
|
||||||
resources := make([]*common.ResourceInfo, len(searchResp.Data))
|
resources := make([]*common.ResourceInfo, len(searchResp.Data))
|
||||||
if len(searchResp.Data) > 1 {
|
for idx := range searchResp.Data {
|
||||||
for idx := range searchResp.Data[1:] {
|
v := searchResp.Data[idx]
|
||||||
index := idx + 1
|
index := idx
|
||||||
v := searchResp.Data[index]
|
tasks.Go(func() error {
|
||||||
tasks.Go(func() error {
|
ri, err := s.packResource(ctx, v)
|
||||||
ri, err := s.packResource(ctx, v)
|
if err != nil {
|
||||||
if err != nil {
|
logs.CtxErrorf(ctx, "[LibraryResourceList] packResource failed, will ignore resID: %d, Name : %s, resType: %d, err: %v",
|
||||||
logs.CtxErrorf(ctx, "[LibraryResourceList] packResource failed, will ignore resID: %d, Name : %s, resType: %d, err: %v",
|
v.ResID, v.GetName(), v.ResType, err)
|
||||||
v.ResID, v.GetName(), v.ResType, err)
|
return err
|
||||||
return err
|
}
|
||||||
}
|
|
||||||
|
|
||||||
lock.Lock()
|
lock.Lock()
|
||||||
defer lock.Unlock()
|
defer lock.Unlock()
|
||||||
resources[index] = ri
|
resources[index] = ri
|
||||||
return nil
|
return nil
|
||||||
})
|
})
|
||||||
}
|
|
||||||
}
|
|
||||||
if len(searchResp.Data) != 0 {
|
|
||||||
ri, err := s.packResource(ctx, searchResp.Data[0])
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
lock.Lock()
|
|
||||||
resources[0] = ri
|
|
||||||
lock.Unlock()
|
|
||||||
}
|
|
||||||
err = tasks.Wait()
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_ = tasks.Wait()
|
||||||
filterResource := make([]*common.ResourceInfo, 0)
|
filterResource := make([]*common.ResourceInfo, 0)
|
||||||
for _, res := range resources {
|
for _, res := range resources {
|
||||||
if res == nil {
|
if res == nil {
|
||||||
|
|||||||
@ -19,10 +19,7 @@ package user
|
|||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"net/mail"
|
"net/mail"
|
||||||
"os"
|
|
||||||
"slices"
|
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
|
||||||
|
|
||||||
"github.com/coze-dev/coze-studio/backend/api/model/ocean/cloud/developer_api"
|
"github.com/coze-dev/coze-studio/backend/api/model/ocean/cloud/developer_api"
|
||||||
"github.com/coze-dev/coze-studio/backend/api/model/ocean/cloud/playground"
|
"github.com/coze-dev/coze-studio/backend/api/model/ocean/cloud/playground"
|
||||||
@ -33,8 +30,7 @@ import (
|
|||||||
"github.com/coze-dev/coze-studio/backend/infra/contract/storage"
|
"github.com/coze-dev/coze-studio/backend/infra/contract/storage"
|
||||||
"github.com/coze-dev/coze-studio/backend/pkg/errorx"
|
"github.com/coze-dev/coze-studio/backend/pkg/errorx"
|
||||||
"github.com/coze-dev/coze-studio/backend/pkg/lang/ptr"
|
"github.com/coze-dev/coze-studio/backend/pkg/lang/ptr"
|
||||||
langSlices "github.com/coze-dev/coze-studio/backend/pkg/lang/slices"
|
"github.com/coze-dev/coze-studio/backend/pkg/lang/slices"
|
||||||
"github.com/coze-dev/coze-studio/backend/types/consts"
|
|
||||||
"github.com/coze-dev/coze-studio/backend/types/errno"
|
"github.com/coze-dev/coze-studio/backend/types/errno"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -60,11 +56,6 @@ func (u *UserApplicationService) PassportWebEmailRegisterV2(ctx context.Context,
|
|||||||
return nil, "", errorx.New(errno.ErrUserInvalidParamCode, errorx.KV("msg", "Invalid email"))
|
return nil, "", errorx.New(errno.ErrUserInvalidParamCode, errorx.KV("msg", "Invalid email"))
|
||||||
}
|
}
|
||||||
|
|
||||||
// Allow Register Checker
|
|
||||||
if !u.allowRegisterChecker(req.GetEmail()) {
|
|
||||||
return nil, "", errorx.New(errno.ErrNotAllowedRegisterCode)
|
|
||||||
}
|
|
||||||
|
|
||||||
userInfo, err := u.DomainSVC.Create(ctx, &user.CreateUserRequest{
|
userInfo, err := u.DomainSVC.Create(ctx, &user.CreateUserRequest{
|
||||||
Email: req.GetEmail(),
|
Email: req.GetEmail(),
|
||||||
Password: req.GetPassword(),
|
Password: req.GetPassword(),
|
||||||
@ -86,20 +77,6 @@ func (u *UserApplicationService) PassportWebEmailRegisterV2(ctx context.Context,
|
|||||||
}, userInfo.SessionKey, nil
|
}, userInfo.SessionKey, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (u *UserApplicationService) allowRegisterChecker(email string) bool {
|
|
||||||
disableUserRegistration := os.Getenv(consts.DisableUserRegistration)
|
|
||||||
if strings.ToLower(disableUserRegistration) != "true" {
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
allowedEmails := os.Getenv(consts.AllowRegistrationEmail)
|
|
||||||
if allowedEmails == "" {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
return slices.Contains(strings.Split(allowedEmails, ","), strings.ToLower(email))
|
|
||||||
}
|
|
||||||
|
|
||||||
// PassportWebLogoutGet 处理用户登出请求
|
// PassportWebLogoutGet 处理用户登出请求
|
||||||
func (u *UserApplicationService) PassportWebLogoutGet(ctx context.Context, req *passport.PassportWebLogoutGetRequest) (
|
func (u *UserApplicationService) PassportWebLogoutGet(ctx context.Context, req *passport.PassportWebLogoutGetRequest) (
|
||||||
resp *passport.PassportWebLogoutGetResponse, err error,
|
resp *passport.PassportWebLogoutGetResponse, err error,
|
||||||
@ -227,7 +204,7 @@ func (u *UserApplicationService) GetSpaceListV2(ctx context.Context, req *playgr
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
botSpaces := langSlices.Transform(spaces, func(space *entity.Space) *playground.BotSpaceV2 {
|
botSpaces := slices.Transform(spaces, func(space *entity.Space) *playground.BotSpaceV2 {
|
||||||
return &playground.BotSpaceV2{
|
return &playground.BotSpaceV2{
|
||||||
ID: space.ID,
|
ID: space.ID,
|
||||||
Name: space.Name,
|
Name: space.Name,
|
||||||
@ -253,7 +230,7 @@ func (u *UserApplicationService) GetSpaceListV2(ctx context.Context, req *playgr
|
|||||||
func (u *UserApplicationService) MGetUserBasicInfo(ctx context.Context, req *playground.MGetUserBasicInfoRequest) (
|
func (u *UserApplicationService) MGetUserBasicInfo(ctx context.Context, req *playground.MGetUserBasicInfoRequest) (
|
||||||
resp *playground.MGetUserBasicInfoResponse, err error,
|
resp *playground.MGetUserBasicInfoResponse, err error,
|
||||||
) {
|
) {
|
||||||
userIDs, err := langSlices.TransformWithErrorCheck(req.GetUserIds(), func(s string) (int64, error) {
|
userIDs, err := slices.TransformWithErrorCheck(req.GetUserIds(), func(s string) (int64, error) {
|
||||||
return strconv.ParseInt(s, 10, 64)
|
return strconv.ParseInt(s, 10, 64)
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -266,7 +243,7 @@ func (u *UserApplicationService) MGetUserBasicInfo(ctx context.Context, req *pla
|
|||||||
}
|
}
|
||||||
|
|
||||||
return &playground.MGetUserBasicInfoResponse{
|
return &playground.MGetUserBasicInfoResponse{
|
||||||
UserBasicInfoMap: langSlices.ToMap(userInfos, func(userInfo *entity.User) (string, *playground.UserBasicInfo) {
|
UserBasicInfoMap: slices.ToMap(userInfos, func(userInfo *entity.User) (string, *playground.UserBasicInfo) {
|
||||||
return strconv.FormatInt(userInfo.UserID, 10), userDo2PlaygroundTo(userInfo)
|
return strconv.FormatInt(userInfo.UserID, 10), userDo2PlaygroundTo(userInfo)
|
||||||
}),
|
}),
|
||||||
Code: 0,
|
Code: 0,
|
||||||
|
|||||||
@ -3497,7 +3497,7 @@ func entityNodeTypeToAPINodeTemplateType(nodeType entity.NodeType) (workflow.Nod
|
|||||||
// return workflow.NodeTemplateType_DatabaseInsert, nil
|
// return workflow.NodeTemplateType_DatabaseInsert, nil
|
||||||
return workflow.NodeTemplateType(46), nil
|
return workflow.NodeTemplateType(46), nil
|
||||||
case entity.NodeTypeJsonSerialization:
|
case entity.NodeTypeJsonSerialization:
|
||||||
return workflow.NodeTemplateType(58), nil
|
return workflow.NodeTemplateType_JsonSerialization, nil
|
||||||
case entity.NodeTypeJsonDeserialization:
|
case entity.NodeTypeJsonDeserialization:
|
||||||
return workflow.NodeTemplateType_JsonDeserialization, nil
|
return workflow.NodeTemplateType_JsonDeserialization, nil
|
||||||
case entity.NodeTypeKnowledgeDeleter:
|
case entity.NodeTypeKnowledgeDeleter:
|
||||||
|
|||||||
@ -157,7 +157,7 @@ meta:
|
|||||||
top_k: 0
|
top_k: 0
|
||||||
stop: []
|
stop: []
|
||||||
openai:
|
openai:
|
||||||
by_azure: false
|
by_azure: true
|
||||||
api_version: ""
|
api_version: ""
|
||||||
response_format:
|
response_format:
|
||||||
type: text
|
type: text
|
||||||
|
|||||||
@ -58,7 +58,9 @@ func (dao *KnowledgeDocumentSliceDAO) BatchCreate(ctx context.Context, slices []
|
|||||||
func (dao *KnowledgeDocumentSliceDAO) BatchSetStatus(ctx context.Context, ids []int64, status int32, reason string) error {
|
func (dao *KnowledgeDocumentSliceDAO) BatchSetStatus(ctx context.Context, ids []int64, status int32, reason string) error {
|
||||||
s := dao.Query.KnowledgeDocumentSlice
|
s := dao.Query.KnowledgeDocumentSlice
|
||||||
updates := map[string]any{s.Status.ColumnName().String(): status}
|
updates := map[string]any{s.Status.ColumnName().String(): status}
|
||||||
updates[s.FailReason.ColumnName().String()] = reason
|
if reason != "" {
|
||||||
|
updates[s.FailReason.ColumnName().String()] = reason
|
||||||
|
}
|
||||||
updates[s.UpdatedAt.ColumnName().String()] = time.Now().UnixMilli()
|
updates[s.UpdatedAt.ColumnName().String()] = time.Now().UnixMilli()
|
||||||
_, err := s.WithContext(ctx).Where(s.ID.In(ids...)).Updates(updates)
|
_, err := s.WithContext(ctx).Where(s.ID.In(ids...)).Updates(updates)
|
||||||
return err
|
return err
|
||||||
|
|||||||
@ -166,22 +166,11 @@ func (k *knowledgeSVC) indexDocument(ctx context.Context, event *entity.Event) (
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
var errMsg string
|
|
||||||
var statusError errorx.StatusError
|
var statusError errorx.StatusError
|
||||||
var status int32
|
if errors.As(err, &statusError) && statusError.Code() == errno.ErrKnowledgeNonRetryableCode {
|
||||||
if errors.As(err, &statusError) {
|
if setStatusErr := k.documentRepo.SetStatus(ctx, event.Document.ID, int32(entity.DocumentStatusFailed), err.Error()); setStatusErr != nil {
|
||||||
errMsg = errorx.ErrorWithoutStack(statusError)
|
logs.CtxErrorf(ctx, "[indexDocument] set document status failed, err: %v", setStatusErr)
|
||||||
if statusError.Code() == errno.ErrKnowledgeNonRetryableCode {
|
|
||||||
status = int32(entity.DocumentStatusFailed)
|
|
||||||
} else {
|
|
||||||
status = int32(entity.DocumentStatusChunking)
|
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
errMsg = err.Error()
|
|
||||||
status = int32(entity.DocumentStatusChunking)
|
|
||||||
}
|
|
||||||
if setStatusErr := k.documentRepo.SetStatus(ctx, event.Document.ID, status, errMsg); setStatusErr != nil {
|
|
||||||
logs.CtxErrorf(ctx, "[indexDocument] set document status failed, err: %v", setStatusErr)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|||||||
@ -545,12 +545,6 @@ func (k *knowledgeSVC) MGetDocumentProgress(ctx context.Context, request *MGetDo
|
|||||||
if documents[i].Status == int32(entity.DocumentStatusEnable) || documents[i].Status == int32(entity.DocumentStatusFailed) {
|
if documents[i].Status == int32(entity.DocumentStatusEnable) || documents[i].Status == int32(entity.DocumentStatusFailed) {
|
||||||
item.Progress = progressbar.ProcessDone
|
item.Progress = progressbar.ProcessDone
|
||||||
} else {
|
} else {
|
||||||
if documents[i].FailReason != "" {
|
|
||||||
item.StatusMsg = documents[i].FailReason
|
|
||||||
item.Status = entity.DocumentStatusFailed
|
|
||||||
progresslist = append(progresslist, &item)
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
err = k.getProgressFromCache(ctx, &item)
|
err = k.getProgressFromCache(ctx, &item)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logs.CtxErrorf(ctx, "get progress from cache failed, err: %v", err)
|
logs.CtxErrorf(ctx, "get progress from cache failed, err: %v", err)
|
||||||
@ -570,9 +564,8 @@ func (k *knowledgeSVC) getProgressFromCache(ctx context.Context, documentProgres
|
|||||||
documentProgress.Progress = int(percent)
|
documentProgress.Progress = int(percent)
|
||||||
documentProgress.RemainingSec = int64(remainSec)
|
documentProgress.RemainingSec = int64(remainSec)
|
||||||
if len(errMsg) != 0 {
|
if len(errMsg) != 0 {
|
||||||
documentProgress.Status = entity.DocumentStatusFailed
|
documentProgress.Progress = 0
|
||||||
documentProgress.StatusMsg = errMsg
|
documentProgress.Status = entity.DocumentStatusChunking
|
||||||
return err
|
|
||||||
}
|
}
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@ -1283,16 +1276,6 @@ func (k *knowledgeSVC) fromModelDocument(ctx context.Context, document *model.Kn
|
|||||||
documentEntity.TableInfo.Columns = append(documentEntity.TableInfo.Columns, document.TableInfo.Columns[i])
|
documentEntity.TableInfo.Columns = append(documentEntity.TableInfo.Columns, document.TableInfo.Columns[i])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
switch document.Status {
|
|
||||||
case int32(entity.DocumentStatusChunking), int32(entity.DocumentStatusInit), int32(entity.DocumentStatusUploading):
|
|
||||||
if document.FailReason != "" {
|
|
||||||
documentEntity.Status = entity.DocumentStatusFailed
|
|
||||||
documentEntity.StatusMsg = document.FailReason
|
|
||||||
}
|
|
||||||
case int32(entity.DocumentStatusFailed):
|
|
||||||
documentEntity.StatusMsg = document.FailReason
|
|
||||||
default:
|
|
||||||
}
|
|
||||||
if len(document.URI) != 0 {
|
if len(document.URI) != 0 {
|
||||||
objUrl, err := k.storage.GetObjectUrl(ctx, document.URI)
|
objUrl, err := k.storage.GetObjectUrl(ctx, document.URI)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
@ -33,7 +33,7 @@ const (
|
|||||||
func SwitchToDataType(itemType table.FieldItemType) entity.DataType {
|
func SwitchToDataType(itemType table.FieldItemType) entity.DataType {
|
||||||
switch itemType {
|
switch itemType {
|
||||||
case table.FieldItemType_Text:
|
case table.FieldItemType_Text:
|
||||||
return entity.TypeText
|
return entity.TypeVarchar
|
||||||
case table.FieldItemType_Number:
|
case table.FieldItemType_Number:
|
||||||
return entity.TypeBigInt
|
return entity.TypeBigInt
|
||||||
case table.FieldItemType_Date:
|
case table.FieldItemType_Date:
|
||||||
|
|||||||
@ -27,7 +27,6 @@ import (
|
|||||||
|
|
||||||
"github.com/coze-dev/coze-studio/backend/api/model/crossdomain/plugin"
|
"github.com/coze-dev/coze-studio/backend/api/model/crossdomain/plugin"
|
||||||
"github.com/coze-dev/coze-studio/backend/api/model/plugin_develop_common"
|
"github.com/coze-dev/coze-studio/backend/api/model/plugin_develop_common"
|
||||||
"github.com/coze-dev/coze-studio/backend/domain/plugin/conf"
|
|
||||||
"github.com/coze-dev/coze-studio/backend/domain/plugin/entity"
|
"github.com/coze-dev/coze-studio/backend/domain/plugin/entity"
|
||||||
"github.com/coze-dev/coze-studio/backend/domain/plugin/internal/dal/model"
|
"github.com/coze-dev/coze-studio/backend/domain/plugin/internal/dal/model"
|
||||||
"github.com/coze-dev/coze-studio/backend/domain/plugin/internal/dal/query"
|
"github.com/coze-dev/coze-studio/backend/domain/plugin/internal/dal/query"
|
||||||
@ -89,7 +88,7 @@ func (p *PluginDraftDAO) getSelected(opt *PluginSelectedOption) (selected []fiel
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (p *PluginDraftDAO) Create(ctx context.Context, plugin *entity.PluginInfo) (pluginID int64, err error) {
|
func (p *PluginDraftDAO) Create(ctx context.Context, plugin *entity.PluginInfo) (pluginID int64, err error) {
|
||||||
id, err := p.genPluginID(ctx)
|
id, err := p.idGen.GenID(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return 0, err
|
return 0, err
|
||||||
}
|
}
|
||||||
@ -118,25 +117,6 @@ func (p *PluginDraftDAO) Create(ctx context.Context, plugin *entity.PluginInfo)
|
|||||||
return id, nil
|
return id, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *PluginDraftDAO) genPluginID(ctx context.Context) (id int64, err error) {
|
|
||||||
|
|
||||||
retryTimes := 5
|
|
||||||
for i := 0; i < retryTimes; i++ {
|
|
||||||
id, err = p.idGen.GenID(ctx)
|
|
||||||
if err != nil {
|
|
||||||
return 0, err
|
|
||||||
}
|
|
||||||
if _, ok := conf.GetPluginProduct(id); !ok {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
if i == retryTimes-1 {
|
|
||||||
return 0, fmt.Errorf("id %d is confilict with product plugin id.", id)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return id, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (p *PluginDraftDAO) Get(ctx context.Context, pluginID int64, opt *PluginSelectedOption) (plugin *entity.PluginInfo, exist bool, err error) {
|
func (p *PluginDraftDAO) Get(ctx context.Context, pluginID int64, opt *PluginSelectedOption) (plugin *entity.PluginInfo, exist bool, err error) {
|
||||||
table := p.query.PluginDraft
|
table := p.query.PluginDraft
|
||||||
pl, err := table.WithContext(ctx).
|
pl, err := table.WithContext(ctx).
|
||||||
@ -282,7 +262,7 @@ func (p *PluginDraftDAO) Update(ctx context.Context, plugin *entity.PluginInfo)
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (p *PluginDraftDAO) CreateWithTX(ctx context.Context, tx *query.QueryTx, plugin *entity.PluginInfo) (pluginID int64, err error) {
|
func (p *PluginDraftDAO) CreateWithTX(ctx context.Context, tx *query.QueryTx, plugin *entity.PluginInfo) (pluginID int64, err error) {
|
||||||
id, err := p.genPluginID(ctx)
|
id, err := p.idGen.GenID(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return 0, err
|
return 0, err
|
||||||
}
|
}
|
||||||
|
|||||||
@ -27,7 +27,6 @@ import (
|
|||||||
|
|
||||||
"github.com/coze-dev/coze-studio/backend/api/model/crossdomain/plugin"
|
"github.com/coze-dev/coze-studio/backend/api/model/crossdomain/plugin"
|
||||||
common "github.com/coze-dev/coze-studio/backend/api/model/plugin_develop_common"
|
common "github.com/coze-dev/coze-studio/backend/api/model/plugin_develop_common"
|
||||||
"github.com/coze-dev/coze-studio/backend/domain/plugin/conf"
|
|
||||||
"github.com/coze-dev/coze-studio/backend/domain/plugin/entity"
|
"github.com/coze-dev/coze-studio/backend/domain/plugin/entity"
|
||||||
"github.com/coze-dev/coze-studio/backend/domain/plugin/internal/dal/model"
|
"github.com/coze-dev/coze-studio/backend/domain/plugin/internal/dal/model"
|
||||||
"github.com/coze-dev/coze-studio/backend/domain/plugin/internal/dal/query"
|
"github.com/coze-dev/coze-studio/backend/domain/plugin/internal/dal/query"
|
||||||
@ -91,8 +90,7 @@ func (t *ToolDraftDAO) getSelected(opt *ToolSelectedOption) (selected []field.Ex
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (t *ToolDraftDAO) Create(ctx context.Context, tool *entity.ToolInfo) (toolID int64, err error) {
|
func (t *ToolDraftDAO) Create(ctx context.Context, tool *entity.ToolInfo) (toolID int64, err error) {
|
||||||
|
id, err := t.idGen.GenID(ctx)
|
||||||
id, err := t.genToolID(ctx)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return 0, err
|
return 0, err
|
||||||
}
|
}
|
||||||
@ -113,27 +111,6 @@ func (t *ToolDraftDAO) Create(ctx context.Context, tool *entity.ToolInfo) (toolI
|
|||||||
return id, nil
|
return id, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t *ToolDraftDAO) genToolID(ctx context.Context) (id int64, err error) {
|
|
||||||
|
|
||||||
retryTimes := 5
|
|
||||||
|
|
||||||
for i := 0; i < retryTimes; i++ {
|
|
||||||
id, err = t.idGen.GenID(ctx)
|
|
||||||
if err != nil {
|
|
||||||
return 0, err
|
|
||||||
}
|
|
||||||
|
|
||||||
if _, ok := conf.GetToolProduct(id); !ok {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
if i == retryTimes-1 {
|
|
||||||
return 0, fmt.Errorf("id %d is confilict with product tool id.", id)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return id, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (t *ToolDraftDAO) Get(ctx context.Context, toolID int64) (tool *entity.ToolInfo, exist bool, err error) {
|
func (t *ToolDraftDAO) Get(ctx context.Context, toolID int64) (tool *entity.ToolInfo, exist bool, err error) {
|
||||||
table := t.query.ToolDraft
|
table := t.query.ToolDraft
|
||||||
tl, err := table.WithContext(ctx).
|
tl, err := table.WithContext(ctx).
|
||||||
@ -358,7 +335,7 @@ func (t *ToolDraftDAO) BatchCreateWithTX(ctx context.Context, tx *query.QueryTx,
|
|||||||
tls := make([]*model.ToolDraft, 0, len(tools))
|
tls := make([]*model.ToolDraft, 0, len(tools))
|
||||||
|
|
||||||
for _, tool := range tools {
|
for _, tool := range tools {
|
||||||
id, err := t.genToolID(ctx)
|
id, err := t.idGen.GenID(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|||||||
@ -12,7 +12,7 @@ require (
|
|||||||
github.com/apache/thrift v0.21.0
|
github.com/apache/thrift v0.21.0
|
||||||
github.com/bytedance/mockey v1.2.14
|
github.com/bytedance/mockey v1.2.14
|
||||||
github.com/bytedance/sonic v1.13.2
|
github.com/bytedance/sonic v1.13.2
|
||||||
github.com/cloudwego/eino v0.3.55
|
github.com/cloudwego/eino v0.3.51
|
||||||
github.com/cloudwego/eino-ext/components/model/ark v0.1.15
|
github.com/cloudwego/eino-ext/components/model/ark v0.1.15
|
||||||
github.com/cloudwego/eino-ext/components/model/claude v0.1.1
|
github.com/cloudwego/eino-ext/components/model/claude v0.1.1
|
||||||
github.com/cloudwego/eino-ext/components/model/deepseek v0.0.0-20250715055739-0d0e28441a2f
|
github.com/cloudwego/eino-ext/components/model/deepseek v0.0.0-20250715055739-0d0e28441a2f
|
||||||
@ -55,7 +55,6 @@ require github.com/alicebob/miniredis/v2 v2.34.0
|
|||||||
require (
|
require (
|
||||||
github.com/DATA-DOG/go-sqlmock v1.5.2
|
github.com/DATA-DOG/go-sqlmock v1.5.2
|
||||||
github.com/cloudwego/eino-ext/components/embedding/ark v0.0.0-20250522060253-ddb617598b09
|
github.com/cloudwego/eino-ext/components/embedding/ark v0.0.0-20250522060253-ddb617598b09
|
||||||
github.com/cloudwego/eino-ext/components/embedding/ollama v0.0.0-20250728060543-79ec300857b8
|
|
||||||
github.com/cloudwego/eino-ext/components/embedding/openai v0.0.0-20250522060253-ddb617598b09
|
github.com/cloudwego/eino-ext/components/embedding/openai v0.0.0-20250522060253-ddb617598b09
|
||||||
github.com/cloudwego/eino-ext/components/model/gemini v0.1.2
|
github.com/cloudwego/eino-ext/components/model/gemini v0.1.2
|
||||||
github.com/cloudwego/eino-ext/components/model/ollama v0.0.0-20250610035057-2c4e7c8488a5
|
github.com/cloudwego/eino-ext/components/model/ollama v0.0.0-20250610035057-2c4e7c8488a5
|
||||||
@ -67,7 +66,7 @@ require (
|
|||||||
github.com/jinzhu/copier v0.4.0
|
github.com/jinzhu/copier v0.4.0
|
||||||
github.com/mattn/go-shellwords v1.0.12
|
github.com/mattn/go-shellwords v1.0.12
|
||||||
github.com/nsqio/go-nsq v1.1.0
|
github.com/nsqio/go-nsq v1.1.0
|
||||||
github.com/ollama/ollama v0.9.6
|
github.com/ollama/ollama v0.6.5
|
||||||
github.com/rbretecher/go-postman-collection v0.9.0
|
github.com/rbretecher/go-postman-collection v0.9.0
|
||||||
github.com/volcengine/ve-tos-golang-sdk/v2 v2.7.17
|
github.com/volcengine/ve-tos-golang-sdk/v2 v2.7.17
|
||||||
github.com/yuin/goldmark v1.4.13
|
github.com/yuin/goldmark v1.4.13
|
||||||
@ -81,10 +80,6 @@ require (
|
|||||||
cloud.google.com/go/auth v0.9.3 // indirect
|
cloud.google.com/go/auth v0.9.3 // indirect
|
||||||
cloud.google.com/go/compute/metadata v0.5.0 // indirect
|
cloud.google.com/go/compute/metadata v0.5.0 // indirect
|
||||||
github.com/alicebob/gopher-json v0.0.0-20230218143504-906a9b012302 // indirect
|
github.com/alicebob/gopher-json v0.0.0-20230218143504-906a9b012302 // indirect
|
||||||
github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.37 // indirect
|
|
||||||
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.7.5 // indirect
|
|
||||||
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.18 // indirect
|
|
||||||
github.com/aws/aws-sdk-go-v2/service/s3 v1.84.1 // indirect
|
|
||||||
github.com/cloudwego/gopkg v0.1.4 // indirect
|
github.com/cloudwego/gopkg v0.1.4 // indirect
|
||||||
github.com/evanphx/json-patch v4.12.0+incompatible // indirect
|
github.com/evanphx/json-patch v4.12.0+incompatible // indirect
|
||||||
github.com/extrame/ole2 v0.0.0-20160812065207-d69429661ad7 // indirect
|
github.com/extrame/ole2 v0.0.0-20160812065207-d69429661ad7 // indirect
|
||||||
@ -111,20 +106,20 @@ require (
|
|||||||
require (
|
require (
|
||||||
github.com/anthropics/anthropic-sdk-go v1.4.0 // indirect
|
github.com/anthropics/anthropic-sdk-go v1.4.0 // indirect
|
||||||
github.com/avast/retry-go v3.0.0+incompatible // indirect
|
github.com/avast/retry-go v3.0.0+incompatible // indirect
|
||||||
github.com/aws/aws-sdk-go-v2 v1.36.6 // indirect
|
github.com/aws/aws-sdk-go-v2 v1.33.0 // indirect
|
||||||
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.11 // indirect
|
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.3 // indirect
|
||||||
github.com/aws/aws-sdk-go-v2/config v1.29.1 // indirect
|
github.com/aws/aws-sdk-go-v2/config v1.29.1 // indirect
|
||||||
github.com/aws/aws-sdk-go-v2/credentials v1.17.54 // indirect
|
github.com/aws/aws-sdk-go-v2/credentials v1.17.54 // indirect
|
||||||
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.24 // indirect
|
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.24 // indirect
|
||||||
github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.37 // indirect
|
github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.28 // indirect
|
||||||
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.37 // indirect
|
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.28 // indirect
|
||||||
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1 // indirect
|
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1 // indirect
|
||||||
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.4 // indirect
|
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.1 // indirect
|
||||||
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.18 // indirect
|
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.9 // indirect
|
||||||
github.com/aws/aws-sdk-go-v2/service/sso v1.24.11 // indirect
|
github.com/aws/aws-sdk-go-v2/service/sso v1.24.11 // indirect
|
||||||
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.10 // indirect
|
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.10 // indirect
|
||||||
github.com/aws/aws-sdk-go-v2/service/sts v1.33.9 // indirect
|
github.com/aws/aws-sdk-go-v2/service/sts v1.33.9 // indirect
|
||||||
github.com/aws/smithy-go v1.22.4 // indirect
|
github.com/aws/smithy-go v1.22.1 // indirect
|
||||||
github.com/beorn7/perks v1.0.1 // indirect
|
github.com/beorn7/perks v1.0.1 // indirect
|
||||||
github.com/blang/semver/v4 v4.0.0 // indirect
|
github.com/blang/semver/v4 v4.0.0 // indirect
|
||||||
github.com/bytedance/gopkg v0.1.1 // indirect
|
github.com/bytedance/gopkg v0.1.1 // indirect
|
||||||
@ -247,7 +242,7 @@ require (
|
|||||||
github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802 // indirect
|
github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802 // indirect
|
||||||
github.com/twitchyliquid64/golang-asm v0.15.1 // indirect
|
github.com/twitchyliquid64/golang-asm v0.15.1 // indirect
|
||||||
github.com/uber/jaeger-client-go v2.30.0+incompatible // indirect
|
github.com/uber/jaeger-client-go v2.30.0+incompatible // indirect
|
||||||
github.com/volcengine/volcengine-go-sdk v1.1.20
|
github.com/volcengine/volcengine-go-sdk v1.1.20 // indirect
|
||||||
github.com/x448/float16 v0.8.4 // indirect
|
github.com/x448/float16 v0.8.4 // indirect
|
||||||
github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 // indirect
|
github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 // indirect
|
||||||
github.com/xuri/efp v0.0.0-20240408161823-9ad904a10d6d // indirect
|
github.com/xuri/efp v0.0.0-20240408161823-9ad904a10d6d // indirect
|
||||||
|
|||||||
@ -824,12 +824,8 @@ github.com/aws/aws-sdk-go v1.40.45/go.mod h1:585smgzpB/KqRA+K3y/NL/oYRqQvpNJYvLm
|
|||||||
github.com/aws/aws-sdk-go-v2 v1.9.1/go.mod h1:cK/D0BBs0b/oWPIcX/Z/obahJK1TT7IPVjy53i/mX/4=
|
github.com/aws/aws-sdk-go-v2 v1.9.1/go.mod h1:cK/D0BBs0b/oWPIcX/Z/obahJK1TT7IPVjy53i/mX/4=
|
||||||
github.com/aws/aws-sdk-go-v2 v1.33.0 h1:Evgm4DI9imD81V0WwD+TN4DCwjUMdc94TrduMLbgZJs=
|
github.com/aws/aws-sdk-go-v2 v1.33.0 h1:Evgm4DI9imD81V0WwD+TN4DCwjUMdc94TrduMLbgZJs=
|
||||||
github.com/aws/aws-sdk-go-v2 v1.33.0/go.mod h1:P5WJBrYqqbWVaOxgH0X/FYYD47/nooaPOZPlQdmiN2U=
|
github.com/aws/aws-sdk-go-v2 v1.33.0/go.mod h1:P5WJBrYqqbWVaOxgH0X/FYYD47/nooaPOZPlQdmiN2U=
|
||||||
github.com/aws/aws-sdk-go-v2 v1.36.6 h1:zJqGjVbRdTPojeCGWn5IR5pbJwSQSBh5RWFTQcEQGdU=
|
|
||||||
github.com/aws/aws-sdk-go-v2 v1.36.6/go.mod h1:EYrzvCCN9CMUTa5+6lf6MM4tq3Zjp8UhSGR/cBsjai0=
|
|
||||||
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.3 h1:tW1/Rkad38LA15X4UQtjXZXNKsCgkshC3EbmcUmghTg=
|
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.3 h1:tW1/Rkad38LA15X4UQtjXZXNKsCgkshC3EbmcUmghTg=
|
||||||
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.3/go.mod h1:UbnqO+zjqk3uIt9yCACHJ9IVNhyhOCnYk8yA19SAWrM=
|
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.3/go.mod h1:UbnqO+zjqk3uIt9yCACHJ9IVNhyhOCnYk8yA19SAWrM=
|
||||||
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.11 h1:12SpdwU8Djs+YGklkinSSlcrPyj3H4VifVsKf78KbwA=
|
|
||||||
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.11/go.mod h1:dd+Lkp6YmMryke+qxW/VnKyhMBDTYP41Q2Bb+6gNZgY=
|
|
||||||
github.com/aws/aws-sdk-go-v2/config v1.29.1 h1:JZhGawAyZ/EuJeBtbQYnaoftczcb2drR2Iq36Wgz4sQ=
|
github.com/aws/aws-sdk-go-v2/config v1.29.1 h1:JZhGawAyZ/EuJeBtbQYnaoftczcb2drR2Iq36Wgz4sQ=
|
||||||
github.com/aws/aws-sdk-go-v2/config v1.29.1/go.mod h1:7bR2YD5euaxBhzt2y/oDkt3uNRb6tjFp98GlTFueRwk=
|
github.com/aws/aws-sdk-go-v2/config v1.29.1/go.mod h1:7bR2YD5euaxBhzt2y/oDkt3uNRb6tjFp98GlTFueRwk=
|
||||||
github.com/aws/aws-sdk-go-v2/credentials v1.17.54 h1:4UmqeOqJPvdvASZWrKlhzpRahAulBfyTJQUaYy4+hEI=
|
github.com/aws/aws-sdk-go-v2/credentials v1.17.54 h1:4UmqeOqJPvdvASZWrKlhzpRahAulBfyTJQUaYy4+hEI=
|
||||||
@ -838,31 +834,15 @@ github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.24 h1:5grmdTdMsovn9kPZPI23Hh
|
|||||||
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.24/go.mod h1:zqi7TVKTswH3Ozq28PkmBmgzG1tona7mo9G2IJg4Cis=
|
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.24/go.mod h1:zqi7TVKTswH3Ozq28PkmBmgzG1tona7mo9G2IJg4Cis=
|
||||||
github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.28 h1:igORFSiH3bfq4lxKFkTSYDhJEUCYo6C8VKiWJjYwQuQ=
|
github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.28 h1:igORFSiH3bfq4lxKFkTSYDhJEUCYo6C8VKiWJjYwQuQ=
|
||||||
github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.28/go.mod h1:3So8EA/aAYm36L7XIvCVwLa0s5N0P7o2b1oqnx/2R4g=
|
github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.28/go.mod h1:3So8EA/aAYm36L7XIvCVwLa0s5N0P7o2b1oqnx/2R4g=
|
||||||
github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.37 h1:osMWfm/sC/L4tvEdQ65Gri5ZZDCUpuYJZbTTDrsn4I0=
|
|
||||||
github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.37/go.mod h1:ZV2/1fbjOPr4G4v38G3Ww5TBT4+hmsK45s/rxu1fGy0=
|
|
||||||
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.28 h1:1mOW9zAUMhTSrMDssEHS/ajx8JcAj/IcftzcmNlmVLI=
|
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.28 h1:1mOW9zAUMhTSrMDssEHS/ajx8JcAj/IcftzcmNlmVLI=
|
||||||
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.28/go.mod h1:kGlXVIWDfvt2Ox5zEaNglmq0hXPHgQFNMix33Tw22jA=
|
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.28/go.mod h1:kGlXVIWDfvt2Ox5zEaNglmq0hXPHgQFNMix33Tw22jA=
|
||||||
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.37 h1:v+X21AvTb2wZ+ycg1gx+orkB/9U6L7AOp93R7qYxsxM=
|
|
||||||
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.37/go.mod h1:G0uM1kyssELxmJ2VZEfG0q2npObR3BAkF3c1VsfVnfs=
|
|
||||||
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1 h1:VaRN3TlFdd6KxX1x3ILT5ynH6HvKgqdiXoTxAF4HQcQ=
|
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1 h1:VaRN3TlFdd6KxX1x3ILT5ynH6HvKgqdiXoTxAF4HQcQ=
|
||||||
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1/go.mod h1:FbtygfRFze9usAadmnGJNc8KsP346kEe+y2/oyhGAGc=
|
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1/go.mod h1:FbtygfRFze9usAadmnGJNc8KsP346kEe+y2/oyhGAGc=
|
||||||
github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.37 h1:XTZZ0I3SZUHAtBLBU6395ad+VOblE0DwQP6MuaNeics=
|
|
||||||
github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.37/go.mod h1:Pi6ksbniAWVwu2S8pEzcYPyhUkAcLaufxN7PfAUQjBk=
|
|
||||||
github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.8.1/go.mod h1:CM+19rL1+4dFWnOQKwDc7H1KwXTz+h61oUSHyhV0b3o=
|
github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.8.1/go.mod h1:CM+19rL1+4dFWnOQKwDc7H1KwXTz+h61oUSHyhV0b3o=
|
||||||
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.1 h1:iXtILhvDxB6kPvEXgsDhGaZCSC6LQET5ZHSdJozeI0Y=
|
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.1 h1:iXtILhvDxB6kPvEXgsDhGaZCSC6LQET5ZHSdJozeI0Y=
|
||||||
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.1/go.mod h1:9nu0fVANtYiAePIBh2/pFUSwtJ402hLnp854CNoDOeE=
|
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.1/go.mod h1:9nu0fVANtYiAePIBh2/pFUSwtJ402hLnp854CNoDOeE=
|
||||||
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.4 h1:CXV68E2dNqhuynZJPB80bhPQwAKqBWVer887figW6Jc=
|
|
||||||
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.4/go.mod h1:/xFi9KtvBXP97ppCz1TAEvU1Uf66qvid89rbem3wCzQ=
|
|
||||||
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.7.5 h1:M5/B8JUaCI8+9QD+u3S/f4YHpvqE9RpSkV3rf0Iks2w=
|
|
||||||
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.7.5/go.mod h1:Bktzci1bwdbpuLiu3AOksiNPMl/LLKmX1TWmqp2xbvs=
|
|
||||||
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.9 h1:TQmKDyETFGiXVhZfQ/I0cCFziqqX58pi4tKJGYGFSz0=
|
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.9 h1:TQmKDyETFGiXVhZfQ/I0cCFziqqX58pi4tKJGYGFSz0=
|
||||||
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.9/go.mod h1:HVLPK2iHQBUx7HfZeOQSEu3v2ubZaAY2YPbAm5/WUyY=
|
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.9/go.mod h1:HVLPK2iHQBUx7HfZeOQSEu3v2ubZaAY2YPbAm5/WUyY=
|
||||||
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.18 h1:vvbXsA2TVO80/KT7ZqCbx934dt6PY+vQ8hZpUZ/cpYg=
|
|
||||||
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.18/go.mod h1:m2JJHledjBGNMsLOF1g9gbAxprzq3KjC8e4lxtn+eWg=
|
|
||||||
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.18 h1:OS2e0SKqsU2LiJPqL8u9x41tKc6MMEHrWjLVLn3oysg=
|
|
||||||
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.18/go.mod h1:+Yrk+MDGzlNGxCXieljNeWpoZTCQUQVL+Jk9hGGJ8qM=
|
|
||||||
github.com/aws/aws-sdk-go-v2/service/s3 v1.84.1 h1:RkHXU9jP0DptGy7qKI8CBGsUJruWz0v5IgwBa2DwWcU=
|
|
||||||
github.com/aws/aws-sdk-go-v2/service/s3 v1.84.1/go.mod h1:3xAOf7tdKF+qbb+XpU+EPhNXAdun3Lu1RcDrj8KC24I=
|
|
||||||
github.com/aws/aws-sdk-go-v2/service/sso v1.24.11 h1:kuIyu4fTT38Kj7YCC7ouNbVZSSpqkZ+LzIfhCr6Dg+I=
|
github.com/aws/aws-sdk-go-v2/service/sso v1.24.11 h1:kuIyu4fTT38Kj7YCC7ouNbVZSSpqkZ+LzIfhCr6Dg+I=
|
||||||
github.com/aws/aws-sdk-go-v2/service/sso v1.24.11/go.mod h1:Ro744S4fKiCCuZECXgOi760TiYylUM8ZBf6OGiZzJtY=
|
github.com/aws/aws-sdk-go-v2/service/sso v1.24.11/go.mod h1:Ro744S4fKiCCuZECXgOi760TiYylUM8ZBf6OGiZzJtY=
|
||||||
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.10 h1:l+dgv/64iVlQ3WsBbnn+JSbkj01jIi+SM0wYsj3y/hY=
|
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.10 h1:l+dgv/64iVlQ3WsBbnn+JSbkj01jIi+SM0wYsj3y/hY=
|
||||||
@ -872,8 +852,6 @@ github.com/aws/aws-sdk-go-v2/service/sts v1.33.9/go.mod h1:f6vjfZER1M17Fokn0Izss
|
|||||||
github.com/aws/smithy-go v1.8.0/go.mod h1:SObp3lf9smib00L/v3U2eAKG8FyQ7iLrJnQiAmR5n+E=
|
github.com/aws/smithy-go v1.8.0/go.mod h1:SObp3lf9smib00L/v3U2eAKG8FyQ7iLrJnQiAmR5n+E=
|
||||||
github.com/aws/smithy-go v1.22.1 h1:/HPHZQ0g7f4eUeK6HKglFz8uwVfZKgoI25rb/J+dnro=
|
github.com/aws/smithy-go v1.22.1 h1:/HPHZQ0g7f4eUeK6HKglFz8uwVfZKgoI25rb/J+dnro=
|
||||||
github.com/aws/smithy-go v1.22.1/go.mod h1:irrKGvNn1InZwb2d7fkIRNucdfwR8R+Ts3wxYa/cJHg=
|
github.com/aws/smithy-go v1.22.1/go.mod h1:irrKGvNn1InZwb2d7fkIRNucdfwR8R+Ts3wxYa/cJHg=
|
||||||
github.com/aws/smithy-go v1.22.4 h1:uqXzVZNuNexwc/xrh6Tb56u89WDlJY6HS+KC0S4QSjw=
|
|
||||||
github.com/aws/smithy-go v1.22.4/go.mod h1:t1ufH5HMublsJYulve2RKmHDC15xu1f26kHCp/HgceI=
|
|
||||||
github.com/aymerick/raymond v2.0.3-0.20180322193309-b565731e1464+incompatible/go.mod h1:osfaiScAUVup+UC9Nfq76eWqDhXlp+4UYaA8uhTBO6g=
|
github.com/aymerick/raymond v2.0.3-0.20180322193309-b565731e1464+incompatible/go.mod h1:osfaiScAUVup+UC9Nfq76eWqDhXlp+4UYaA8uhTBO6g=
|
||||||
github.com/bazelbuild/rules_go v0.49.0/go.mod h1:Dhcz716Kqg1RHNWos+N6MlXNkjNP2EwZQ0LukRKJfMs=
|
github.com/bazelbuild/rules_go v0.49.0/go.mod h1:Dhcz716Kqg1RHNWos+N6MlXNkjNP2EwZQ0LukRKJfMs=
|
||||||
github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA=
|
github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA=
|
||||||
@ -938,12 +916,10 @@ github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp
|
|||||||
github.com/clbanning/mxj v1.8.4/go.mod h1:BVjHeAH+rl9rs6f+QIpeRl0tfu10SXn1pUSa5PVGJng=
|
github.com/clbanning/mxj v1.8.4/go.mod h1:BVjHeAH+rl9rs6f+QIpeRl0tfu10SXn1pUSa5PVGJng=
|
||||||
github.com/cloudwego/base64x v0.1.5 h1:XPciSp1xaq2VCSt6lF0phncD4koWyULpl5bUxbfCyP4=
|
github.com/cloudwego/base64x v0.1.5 h1:XPciSp1xaq2VCSt6lF0phncD4koWyULpl5bUxbfCyP4=
|
||||||
github.com/cloudwego/base64x v0.1.5/go.mod h1:0zlkT4Wn5C6NdauXdJRhSKRlJvmclQ1hhJgA0rcu/8w=
|
github.com/cloudwego/base64x v0.1.5/go.mod h1:0zlkT4Wn5C6NdauXdJRhSKRlJvmclQ1hhJgA0rcu/8w=
|
||||||
github.com/cloudwego/eino v0.3.55 h1:lMZrGtEh0k3qykQTLNXSXuAa98OtF2tS43GMHyvN7nA=
|
github.com/cloudwego/eino v0.3.51 h1:emSaDu49v9EEJYOusL42Li/VL5QBSyBvhxO9ZcKPZvs=
|
||||||
github.com/cloudwego/eino v0.3.55/go.mod h1:wUjz990apdsaOraOXdh6CdhVXq8DJsOvLsVlxNTcNfY=
|
github.com/cloudwego/eino v0.3.51/go.mod h1:wUjz990apdsaOraOXdh6CdhVXq8DJsOvLsVlxNTcNfY=
|
||||||
github.com/cloudwego/eino-ext/components/embedding/ark v0.0.0-20250522060253-ddb617598b09 h1:hZScBE/Etiji2RqjlABcAkq6n1uzYPu+jo4GV5TF8Hc=
|
github.com/cloudwego/eino-ext/components/embedding/ark v0.0.0-20250522060253-ddb617598b09 h1:hZScBE/Etiji2RqjlABcAkq6n1uzYPu+jo4GV5TF8Hc=
|
||||||
github.com/cloudwego/eino-ext/components/embedding/ark v0.0.0-20250522060253-ddb617598b09/go.mod h1:pLtH5BZKgb7/bB8+P3W5/f1d46gTl9K77+08j88Gb4k=
|
github.com/cloudwego/eino-ext/components/embedding/ark v0.0.0-20250522060253-ddb617598b09/go.mod h1:pLtH5BZKgb7/bB8+P3W5/f1d46gTl9K77+08j88Gb4k=
|
||||||
github.com/cloudwego/eino-ext/components/embedding/ollama v0.0.0-20250728060543-79ec300857b8 h1:uJrs6SmfYnca8A+k9+3qJ4MYwYHMncUlGac1mYQT+Ak=
|
|
||||||
github.com/cloudwego/eino-ext/components/embedding/ollama v0.0.0-20250728060543-79ec300857b8/go.mod h1:nav79aUcd+UR24dLA+7l7RcHCMlg26zbDAKvjONdrw0=
|
|
||||||
github.com/cloudwego/eino-ext/components/embedding/openai v0.0.0-20250522060253-ddb617598b09 h1:C8RjF193iguUuevkuv0q4SC+XGlM/DlJEgic7l8OUAI=
|
github.com/cloudwego/eino-ext/components/embedding/openai v0.0.0-20250522060253-ddb617598b09 h1:C8RjF193iguUuevkuv0q4SC+XGlM/DlJEgic7l8OUAI=
|
||||||
github.com/cloudwego/eino-ext/components/embedding/openai v0.0.0-20250522060253-ddb617598b09/go.mod h1:S09z/CAQNyx+AbgfJRQXLUAYlPpxQWWLVuQxO34F90A=
|
github.com/cloudwego/eino-ext/components/embedding/openai v0.0.0-20250522060253-ddb617598b09/go.mod h1:S09z/CAQNyx+AbgfJRQXLUAYlPpxQWWLVuQxO34F90A=
|
||||||
github.com/cloudwego/eino-ext/components/model/ark v0.1.15 h1:ydOvtEK67VI5DvNgg64eTxbjxMYhGBMOVP2okaZKk18=
|
github.com/cloudwego/eino-ext/components/model/ark v0.1.15 h1:ydOvtEK67VI5DvNgg64eTxbjxMYhGBMOVP2okaZKk18=
|
||||||
@ -1618,8 +1594,8 @@ github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+
|
|||||||
github.com/nyaruka/phonenumbers v1.0.55 h1:bj0nTO88Y68KeUQ/n3Lo2KgK7lM1hF7L9NFuwcCl3yg=
|
github.com/nyaruka/phonenumbers v1.0.55 h1:bj0nTO88Y68KeUQ/n3Lo2KgK7lM1hF7L9NFuwcCl3yg=
|
||||||
github.com/nyaruka/phonenumbers v1.0.55/go.mod h1:sDaTZ/KPX5f8qyV9qN+hIm+4ZBARJrupC6LuhshJq1U=
|
github.com/nyaruka/phonenumbers v1.0.55/go.mod h1:sDaTZ/KPX5f8qyV9qN+hIm+4ZBARJrupC6LuhshJq1U=
|
||||||
github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U=
|
github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U=
|
||||||
github.com/ollama/ollama v0.9.6 h1:HZNJmB52pMt6zLkGkkheBuXBXM5478eiSAj7GR75AMc=
|
github.com/ollama/ollama v0.6.5 h1:vXKkVX57ql/1ZzMw4SVK866Qfd6pjwEcITVyEpF0QXQ=
|
||||||
github.com/ollama/ollama v0.9.6/go.mod h1:zLwx3iZ3AI4Rc/egsrx3u1w4RU2MHQ/Ylxse48jvyt4=
|
github.com/ollama/ollama v0.6.5/go.mod h1:pGgtoNyc9DdM6oZI6yMfI6jTk2Eh4c36c2GpfQCH7PY=
|
||||||
github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
|
github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
|
||||||
github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
|
github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
|
||||||
github.com/onsi/ginkgo v1.8.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
|
github.com/onsi/ginkgo v1.8.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
|
||||||
|
|||||||
@ -18,16 +18,12 @@ package veocr
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"errors"
|
|
||||||
"fmt"
|
"fmt"
|
||||||
"net/http"
|
"net/http"
|
||||||
"net/url"
|
"net/url"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
|
||||||
"github.com/coze-dev/coze-studio/backend/pkg/errorx"
|
|
||||||
"github.com/coze-dev/coze-studio/backend/types/errno"
|
|
||||||
"github.com/volcengine/volc-sdk-golang/service/visual"
|
"github.com/volcengine/volc-sdk-golang/service/visual"
|
||||||
"github.com/volcengine/volcengine-go-sdk/service/arkruntime/model"
|
|
||||||
|
|
||||||
"github.com/coze-dev/coze-studio/backend/infra/contract/document/ocr"
|
"github.com/coze-dev/coze-studio/backend/infra/contract/document/ocr"
|
||||||
)
|
)
|
||||||
@ -56,14 +52,10 @@ func (o *ocrImpl) FromBase64(ctx context.Context, b64 string) ([]string, error)
|
|||||||
|
|
||||||
resp, statusCode, err := o.config.Client.OCRNormal(form)
|
resp, statusCode, err := o.config.Client.OCRNormal(form)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, o.handleError(fmt.Errorf("[ve_ocr][FromBase64] OCRNormal err: %w", err))
|
return nil, err
|
||||||
}
|
}
|
||||||
if statusCode != http.StatusOK {
|
if statusCode != http.StatusOK {
|
||||||
err = fmt.Errorf("[ve_ocr][FromBase64] OCRNormal failed, status code=%d", statusCode)
|
return nil, fmt.Errorf("[FromBase64] failed, status code=%d", statusCode)
|
||||||
if statusCode == http.StatusBadRequest {
|
|
||||||
return nil, errorx.WrapByCode(err, errno.ErrKnowledgeNonRetryableCode)
|
|
||||||
}
|
|
||||||
return nil, err
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return resp.Data.LineTexts, nil
|
return resp.Data.LineTexts, nil
|
||||||
@ -75,14 +67,10 @@ func (o *ocrImpl) FromURL(ctx context.Context, url string) ([]string, error) {
|
|||||||
|
|
||||||
resp, statusCode, err := o.config.Client.OCRNormal(form)
|
resp, statusCode, err := o.config.Client.OCRNormal(form)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, o.handleError(fmt.Errorf("[ve_ocr][FromURL] OCRNormal error: %w", err))
|
return nil, err
|
||||||
}
|
}
|
||||||
if statusCode != http.StatusOK {
|
if statusCode != http.StatusOK {
|
||||||
err = fmt.Errorf("[ve_ocr][FromURL] OCRNormal failed, status code=%d", statusCode)
|
return nil, fmt.Errorf("[FromBase64] failed, status code=%d", statusCode)
|
||||||
if statusCode == http.StatusBadRequest {
|
|
||||||
return nil, errorx.WrapByCode(err, errno.ErrKnowledgeNonRetryableCode)
|
|
||||||
}
|
|
||||||
return nil, err
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return resp.Data.LineTexts, nil
|
return resp.Data.LineTexts, nil
|
||||||
@ -106,21 +94,3 @@ func (o *ocrImpl) newForm() url.Values {
|
|||||||
}
|
}
|
||||||
return form
|
return form
|
||||||
}
|
}
|
||||||
|
|
||||||
func (o *ocrImpl) handleError(err error) error {
|
|
||||||
var (
|
|
||||||
apiErr = &model.APIError{}
|
|
||||||
reqErr = &model.RequestError{}
|
|
||||||
)
|
|
||||||
if errors.As(err, &apiErr) {
|
|
||||||
if apiErr.HTTPStatusCode >= http.StatusInternalServerError ||
|
|
||||||
apiErr.HTTPStatusCode == http.StatusTooManyRequests {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
} else if errors.As(err, &reqErr) {
|
|
||||||
if reqErr.HTTPStatusCode >= http.StatusInternalServerError {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return errorx.WrapByCode(err, errno.ErrKnowledgeNonRetryableCode)
|
|
||||||
}
|
|
||||||
|
|||||||
@ -18,16 +18,11 @@ package ark
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"errors"
|
|
||||||
"fmt"
|
"fmt"
|
||||||
"math"
|
"math"
|
||||||
"net/http"
|
|
||||||
|
|
||||||
"github.com/cloudwego/eino-ext/components/embedding/ark"
|
"github.com/cloudwego/eino-ext/components/embedding/ark"
|
||||||
"github.com/cloudwego/eino/components/embedding"
|
"github.com/cloudwego/eino/components/embedding"
|
||||||
"github.com/coze-dev/coze-studio/backend/pkg/errorx"
|
|
||||||
"github.com/coze-dev/coze-studio/backend/types/errno"
|
|
||||||
"github.com/volcengine/volcengine-go-sdk/service/arkruntime/model"
|
|
||||||
|
|
||||||
contract "github.com/coze-dev/coze-studio/backend/infra/contract/embedding"
|
contract "github.com/coze-dev/coze-studio/backend/infra/contract/embedding"
|
||||||
"github.com/coze-dev/coze-studio/backend/pkg/lang/slices"
|
"github.com/coze-dev/coze-studio/backend/pkg/lang/slices"
|
||||||
@ -56,21 +51,7 @@ func (d embWrap) EmbedStrings(ctx context.Context, texts []string, opts ...embed
|
|||||||
}
|
}
|
||||||
normed, err := d.slicedNormL2(partResult)
|
normed, err := d.slicedNormL2(partResult)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
var (
|
return nil, err
|
||||||
apiErr = &model.APIError{}
|
|
||||||
reqErr = &model.RequestError{}
|
|
||||||
)
|
|
||||||
if errors.As(err, &apiErr) {
|
|
||||||
if apiErr.HTTPStatusCode >= http.StatusInternalServerError ||
|
|
||||||
apiErr.HTTPStatusCode == http.StatusTooManyRequests {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
} else if errors.As(err, &reqErr) {
|
|
||||||
if reqErr.HTTPStatusCode >= http.StatusInternalServerError {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return nil, errorx.WrapByCode(err, errno.ErrKnowledgeNonRetryableCode)
|
|
||||||
}
|
}
|
||||||
resp = append(resp, normed...)
|
resp = append(resp, normed...)
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,32 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2024 CloudWeGo Authors
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package wrap
|
|
||||||
|
|
||||||
import (
|
|
||||||
"context"
|
|
||||||
|
|
||||||
"github.com/cloudwego/eino-ext/components/embedding/ollama"
|
|
||||||
contract "github.com/coze-dev/coze-studio/backend/infra/contract/embedding"
|
|
||||||
)
|
|
||||||
|
|
||||||
func NewOllamaEmbedder(ctx context.Context, config *ollama.EmbeddingConfig, dimensions int64) (contract.Embedder, error) {
|
|
||||||
emb, err := ollama.NewEmbedder(ctx, config)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
return &denseOnlyWrap{dims: dimensions, Embedder: emb}, nil
|
|
||||||
}
|
|
||||||
@ -24,14 +24,9 @@ import (
|
|||||||
"github.com/coze-dev/coze-studio/backend/infra/contract/modelmgr"
|
"github.com/coze-dev/coze-studio/backend/infra/contract/modelmgr"
|
||||||
"github.com/coze-dev/coze-studio/backend/pkg/lang/ptr"
|
"github.com/coze-dev/coze-studio/backend/pkg/lang/ptr"
|
||||||
"github.com/coze-dev/coze-studio/backend/pkg/lang/sets"
|
"github.com/coze-dev/coze-studio/backend/pkg/lang/sets"
|
||||||
"github.com/coze-dev/coze-studio/backend/pkg/logs"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func NewModelMgr(staticModels []*modelmgr.Model) (modelmgr.Manager, error) {
|
func NewModelMgr(staticModels []*modelmgr.Model) (modelmgr.Manager, error) {
|
||||||
if len(staticModels) == 0 {
|
|
||||||
logs.Warnf("[NewModelMgr] no static models found, please check if the config has been loaded correctly")
|
|
||||||
}
|
|
||||||
|
|
||||||
mapping := make(map[int64]*modelmgr.Model, len(staticModels))
|
mapping := make(map[int64]*modelmgr.Model, len(staticModels))
|
||||||
for i := range staticModels {
|
for i := range staticModels {
|
||||||
mapping[staticModels[i].ID] = staticModels[i]
|
mapping[staticModels[i].ID] = staticModels[i]
|
||||||
|
|||||||
@ -64,8 +64,6 @@ func (m *mysqlService) CreateTable(ctx context.Context, req *rdb.CreateTableRequ
|
|||||||
if col.DefaultValue != nil {
|
if col.DefaultValue != nil {
|
||||||
if col.DataType == entity2.TypeTimestamp {
|
if col.DataType == entity2.TypeTimestamp {
|
||||||
colDef += fmt.Sprintf(" DEFAULT %s", *col.DefaultValue)
|
colDef += fmt.Sprintf(" DEFAULT %s", *col.DefaultValue)
|
||||||
} else if col.DataType == entity2.TypeText {
|
|
||||||
// do nothing
|
|
||||||
} else {
|
} else {
|
||||||
colDef += fmt.Sprintf(" DEFAULT '%s'", *col.DefaultValue)
|
colDef += fmt.Sprintf(" DEFAULT '%s'", *col.DefaultValue)
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,299 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2025 coze-dev Authors
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package s3
|
|
||||||
|
|
||||||
import (
|
|
||||||
"bytes"
|
|
||||||
"context"
|
|
||||||
"fmt"
|
|
||||||
"io"
|
|
||||||
"net"
|
|
||||||
"net/url"
|
|
||||||
"os"
|
|
||||||
"time"
|
|
||||||
|
|
||||||
"github.com/aws/aws-sdk-go-v2/aws"
|
|
||||||
"github.com/aws/aws-sdk-go-v2/config"
|
|
||||||
"github.com/aws/aws-sdk-go-v2/credentials"
|
|
||||||
"github.com/aws/aws-sdk-go-v2/service/s3"
|
|
||||||
|
|
||||||
"github.com/coze-dev/coze-studio/backend/infra/contract/imagex"
|
|
||||||
"github.com/coze-dev/coze-studio/backend/infra/contract/storage"
|
|
||||||
"github.com/coze-dev/coze-studio/backend/pkg/ctxcache"
|
|
||||||
"github.com/coze-dev/coze-studio/backend/pkg/errorx"
|
|
||||||
"github.com/coze-dev/coze-studio/backend/pkg/logs"
|
|
||||||
"github.com/coze-dev/coze-studio/backend/types/consts"
|
|
||||||
"github.com/coze-dev/coze-studio/backend/types/errno"
|
|
||||||
)
|
|
||||||
|
|
||||||
type s3Client struct {
|
|
||||||
client *s3.Client
|
|
||||||
bucketName string
|
|
||||||
}
|
|
||||||
|
|
||||||
func NewStorageImagex(ctx context.Context, ak, sk, bucketName, endpoint, region string) (imagex.ImageX, error) {
|
|
||||||
t, err := getS3Client(ctx, ak, sk, bucketName, endpoint, region)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
return t, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func getS3Client(ctx context.Context, ak, sk, bucketName, endpoint, region string) (*s3Client, error) {
|
|
||||||
creds := credentials.NewStaticCredentialsProvider(ak, sk, "")
|
|
||||||
customResolver := aws.EndpointResolverWithOptionsFunc(func(service, region string, options ...interface{}) (aws.Endpoint, error) {
|
|
||||||
return aws.Endpoint{
|
|
||||||
PartitionID: "aws",
|
|
||||||
URL: endpoint,
|
|
||||||
SigningRegion: region,
|
|
||||||
HostnameImmutable: true,
|
|
||||||
Source: aws.EndpointSourceCustom,
|
|
||||||
}, nil
|
|
||||||
})
|
|
||||||
cfg, err := config.LoadDefaultConfig(
|
|
||||||
context.TODO(),
|
|
||||||
config.WithCredentialsProvider(creds),
|
|
||||||
config.WithEndpointResolverWithOptions(customResolver),
|
|
||||||
config.WithRegion("auto"),
|
|
||||||
)
|
|
||||||
if err != nil {
|
|
||||||
return nil, fmt.Errorf("init config failed, bucketName: %s, endpoint: %s, region: %s, err: %v", bucketName, endpoint, region, err)
|
|
||||||
}
|
|
||||||
|
|
||||||
c := s3.NewFromConfig(cfg, func(o *s3.Options) {
|
|
||||||
o.UsePathStyle = false // virtual-host mode
|
|
||||||
o.RequestChecksumCalculation = aws.RequestChecksumCalculationWhenRequired
|
|
||||||
})
|
|
||||||
|
|
||||||
t := &s3Client{
|
|
||||||
client: c,
|
|
||||||
bucketName: bucketName,
|
|
||||||
}
|
|
||||||
|
|
||||||
err = t.CheckAndCreateBucket(ctx)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
return t, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func New(ctx context.Context, ak, sk, bucketName, endpoint, region string) (storage.Storage, error) {
|
|
||||||
t, err := getS3Client(ctx, ak, sk, bucketName, endpoint, region)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
return t, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (t *s3Client) test() {
|
|
||||||
// test upload
|
|
||||||
objectKey := fmt.Sprintf("test-%s.txt", time.Now().Format("20060102150405"))
|
|
||||||
err := t.PutObject(context.Background(), objectKey, []byte("hello world"))
|
|
||||||
if err != nil {
|
|
||||||
logs.CtxErrorf(context.Background(), "PutObject failed, objectKey: %s, err: %v", objectKey, err)
|
|
||||||
}
|
|
||||||
|
|
||||||
// test download
|
|
||||||
content, err := t.GetObject(context.Background(), objectKey)
|
|
||||||
if err != nil {
|
|
||||||
logs.CtxErrorf(context.Background(), "GetObject failed, objectKey: %s, err: %v", objectKey, err)
|
|
||||||
}
|
|
||||||
|
|
||||||
logs.CtxInfof(context.Background(), "GetObject content: %s", string(content))
|
|
||||||
|
|
||||||
// test get presigned url
|
|
||||||
url, err := t.GetObjectUrl(context.Background(), objectKey)
|
|
||||||
if err != nil {
|
|
||||||
logs.CtxErrorf(context.Background(), "GetObjectUrl failed, objectKey: %s, err: %v", objectKey, err)
|
|
||||||
}
|
|
||||||
|
|
||||||
logs.CtxInfof(context.Background(), "GetObjectUrl url: %s", url)
|
|
||||||
|
|
||||||
// test delete
|
|
||||||
err = t.DeleteObject(context.Background(), objectKey)
|
|
||||||
if err != nil {
|
|
||||||
logs.CtxErrorf(context.Background(), "DeleteObject failed, objectKey: %s, err: %v", objectKey, err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (t *s3Client) CheckAndCreateBucket(ctx context.Context) error {
|
|
||||||
client := t.client
|
|
||||||
bucket := t.bucketName
|
|
||||||
|
|
||||||
_, err := client.HeadBucket(ctx, &s3.HeadBucketInput{Bucket: aws.String(bucket)})
|
|
||||||
if err == nil {
|
|
||||||
return nil // already exist
|
|
||||||
}
|
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
// bucket not exist
|
|
||||||
if awsErr, ok := err.(interface{ ErrorCode() string }); ok && awsErr.ErrorCode() == "404" {
|
|
||||||
input := &s3.CreateBucketInput{
|
|
||||||
Bucket: aws.String(bucket),
|
|
||||||
}
|
|
||||||
// create bucket
|
|
||||||
_, err := client.CreateBucket(ctx, input)
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
// other case
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (t *s3Client) PutObject(ctx context.Context, objectKey string, content []byte, opts ...storage.PutOptFn) error {
|
|
||||||
client := t.client
|
|
||||||
body := bytes.NewReader(content)
|
|
||||||
bucket := t.bucketName
|
|
||||||
|
|
||||||
// upload object
|
|
||||||
_, err := client.PutObject(ctx, &s3.PutObjectInput{
|
|
||||||
Bucket: aws.String(bucket),
|
|
||||||
Key: aws.String(objectKey),
|
|
||||||
Body: body,
|
|
||||||
})
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
func (t *s3Client) GetObject(ctx context.Context, objectKey string) ([]byte, error) {
|
|
||||||
client := t.client
|
|
||||||
bucket := t.bucketName
|
|
||||||
|
|
||||||
result, err := client.GetObject(ctx, &s3.GetObjectInput{
|
|
||||||
Bucket: aws.String(bucket),
|
|
||||||
Key: aws.String(objectKey),
|
|
||||||
})
|
|
||||||
if err != nil {
|
|
||||||
return nil, fmt.Errorf("get object failed : %v", err)
|
|
||||||
}
|
|
||||||
defer result.Body.Close()
|
|
||||||
|
|
||||||
body, err := io.ReadAll(result.Body)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
return body, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (t *s3Client) DeleteObject(ctx context.Context, objectKey string) error {
|
|
||||||
client := t.client
|
|
||||||
bucket := t.bucketName
|
|
||||||
|
|
||||||
_, err := client.DeleteObject(ctx, &s3.DeleteObjectInput{
|
|
||||||
Bucket: aws.String(bucket),
|
|
||||||
Key: aws.String(objectKey),
|
|
||||||
})
|
|
||||||
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
func (t *s3Client) GetObjectUrl(ctx context.Context, objectKey string, opts ...storage.GetOptFn) (string, error) {
|
|
||||||
client := t.client
|
|
||||||
bucket := t.bucketName
|
|
||||||
presignClient := s3.NewPresignClient(client)
|
|
||||||
|
|
||||||
req, err := presignClient.PresignGetObject(ctx, &s3.GetObjectInput{
|
|
||||||
Bucket: aws.String(bucket),
|
|
||||||
Key: aws.String(objectKey),
|
|
||||||
}, func(options *s3.PresignOptions) {
|
|
||||||
options.Expires = time.Duration(60*60*24) * time.Second
|
|
||||||
})
|
|
||||||
if err != nil {
|
|
||||||
return "", fmt.Errorf("get object presigned url failed: %v", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
// url parse
|
|
||||||
url, err := url.Parse(req.URL)
|
|
||||||
if err != nil {
|
|
||||||
logs.CtxWarnf(ctx, "[GetObjectUrl] url parse failed, err: %v", err)
|
|
||||||
return req.URL, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
proxyPort := os.Getenv(consts.MinIOProxyEndpoint) // :8889
|
|
||||||
if len(proxyPort) > 0 {
|
|
||||||
currentHost, ok := ctxcache.Get[string](ctx, consts.HostKeyInCtx)
|
|
||||||
if !ok {
|
|
||||||
return req.URL, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
currentScheme, ok := ctxcache.Get[string](ctx, consts.RequestSchemeKeyInCtx)
|
|
||||||
if !ok {
|
|
||||||
return req.URL, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
host, _, err := net.SplitHostPort(currentHost)
|
|
||||||
if err != nil {
|
|
||||||
host = currentHost
|
|
||||||
}
|
|
||||||
minioProxyHost := host + proxyPort
|
|
||||||
url.Host = minioProxyHost
|
|
||||||
url.Scheme = currentScheme
|
|
||||||
logs.CtxInfof(ctx, "[GetObjectUrl] reset ORG.URL = %s TOS.URL = %s", req.URL, url.String())
|
|
||||||
return url.String(), nil
|
|
||||||
}
|
|
||||||
|
|
||||||
return req.URL, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (i *s3Client) GetUploadHost(ctx context.Context) string {
|
|
||||||
currentHost, ok := ctxcache.Get[string](ctx, consts.HostKeyInCtx)
|
|
||||||
if !ok {
|
|
||||||
return ""
|
|
||||||
}
|
|
||||||
return currentHost + consts.ApplyUploadActionURI
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
func (t *s3Client) GetServerID() string {
|
|
||||||
return ""
|
|
||||||
}
|
|
||||||
|
|
||||||
func (t *s3Client) GetUploadAuth(ctx context.Context, opt ...imagex.UploadAuthOpt) (*imagex.SecurityToken, error) {
|
|
||||||
scheme, ok := ctxcache.Get[string](ctx, consts.RequestSchemeKeyInCtx)
|
|
||||||
if !ok {
|
|
||||||
return nil, errorx.New(errno.ErrUploadHostSchemaNotExistCode)
|
|
||||||
}
|
|
||||||
return &imagex.SecurityToken{
|
|
||||||
AccessKeyID: "",
|
|
||||||
SecretAccessKey: "",
|
|
||||||
SessionToken: "",
|
|
||||||
ExpiredTime: time.Now().Add(time.Hour).Format("2006-01-02 15:04:05"),
|
|
||||||
CurrentTime: time.Now().Format("2006-01-02 15:04:05"),
|
|
||||||
HostScheme: scheme,
|
|
||||||
}, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (t *s3Client) GetResourceURL(ctx context.Context, uri string, opts ...imagex.GetResourceOpt) (*imagex.ResourceURL, error) {
|
|
||||||
url, err := t.GetObjectUrl(ctx, uri)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
return &imagex.ResourceURL{
|
|
||||||
URL: url,
|
|
||||||
}, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (t *s3Client) Upload(ctx context.Context, data []byte, opts ...imagex.UploadAuthOpt) (*imagex.UploadResult, error) {
|
|
||||||
return nil, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (t *s3Client) GetUploadAuthWithExpire(ctx context.Context, expire time.Duration, opt ...imagex.UploadAuthOpt) (*imagex.SecurityToken, error) {
|
|
||||||
return nil, nil
|
|
||||||
}
|
|
||||||
@ -24,7 +24,6 @@ import (
|
|||||||
"github.com/coze-dev/coze-studio/backend/infra/contract/imagex"
|
"github.com/coze-dev/coze-studio/backend/infra/contract/imagex"
|
||||||
"github.com/coze-dev/coze-studio/backend/infra/contract/storage"
|
"github.com/coze-dev/coze-studio/backend/infra/contract/storage"
|
||||||
"github.com/coze-dev/coze-studio/backend/infra/impl/storage/minio"
|
"github.com/coze-dev/coze-studio/backend/infra/impl/storage/minio"
|
||||||
"github.com/coze-dev/coze-studio/backend/infra/impl/storage/s3"
|
|
||||||
"github.com/coze-dev/coze-studio/backend/infra/impl/storage/tos"
|
"github.com/coze-dev/coze-studio/backend/infra/impl/storage/tos"
|
||||||
"github.com/coze-dev/coze-studio/backend/types/consts"
|
"github.com/coze-dev/coze-studio/backend/types/consts"
|
||||||
)
|
)
|
||||||
@ -52,15 +51,6 @@ func New(ctx context.Context) (Storage, error) {
|
|||||||
os.Getenv(consts.TOSEndpoint),
|
os.Getenv(consts.TOSEndpoint),
|
||||||
os.Getenv(consts.TOSRegion),
|
os.Getenv(consts.TOSRegion),
|
||||||
)
|
)
|
||||||
case "s3":
|
|
||||||
return s3.New(
|
|
||||||
ctx,
|
|
||||||
os.Getenv(consts.S3AccessKey),
|
|
||||||
os.Getenv(consts.S3SecretKey),
|
|
||||||
os.Getenv(consts.StorageBucket),
|
|
||||||
os.Getenv(consts.S3Endpoint),
|
|
||||||
os.Getenv(consts.S3Region),
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil, fmt.Errorf("unknown storage type: %s", storageType)
|
return nil, fmt.Errorf("unknown storage type: %s", storageType)
|
||||||
@ -87,15 +77,6 @@ func NewImagex(ctx context.Context) (imagex.ImageX, error) {
|
|||||||
os.Getenv(consts.TOSEndpoint),
|
os.Getenv(consts.TOSEndpoint),
|
||||||
os.Getenv(consts.TOSRegion),
|
os.Getenv(consts.TOSRegion),
|
||||||
)
|
)
|
||||||
case "s3":
|
|
||||||
return s3.NewStorageImagex(
|
|
||||||
ctx,
|
|
||||||
os.Getenv(consts.S3AccessKey),
|
|
||||||
os.Getenv(consts.S3SecretKey),
|
|
||||||
os.Getenv(consts.StorageBucket),
|
|
||||||
os.Getenv(consts.S3Endpoint),
|
|
||||||
os.Getenv(consts.S3Region),
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
return nil, fmt.Errorf("unknown storage type: %s", storageType)
|
return nil, fmt.Errorf("unknown storage type: %s", storageType)
|
||||||
}
|
}
|
||||||
|
|||||||
@ -168,10 +168,6 @@ func asyncStartMinioProxyServer(ctx context.Context) {
|
|||||||
proxyURL = getEnv(consts.TOSBucketEndpoint, "https://opencoze.tos-cn-beijing.volces.com")
|
proxyURL = getEnv(consts.TOSBucketEndpoint, "https://opencoze.tos-cn-beijing.volces.com")
|
||||||
}
|
}
|
||||||
|
|
||||||
if storageType == "s3" {
|
|
||||||
proxyURL = getEnv(consts.S3BucketEndpoint, "")
|
|
||||||
}
|
|
||||||
|
|
||||||
minioProxyEndpoint := getEnv(consts.MinIOProxyEndpoint, "")
|
minioProxyEndpoint := getEnv(consts.MinIOProxyEndpoint, "")
|
||||||
if len(minioProxyEndpoint) == 0 {
|
if len(minioProxyEndpoint) == 0 {
|
||||||
return
|
return
|
||||||
|
|||||||
@ -1,9 +1,5 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
# Set up Elasticsearch
|
|
||||||
echo "Setting up Elasticsearch..."
|
|
||||||
/app/setup_es.sh --index-dir /app/es_index_schemas
|
|
||||||
|
|
||||||
# Start the proxy application in the background
|
# Start the proxy application in the background
|
||||||
echo "Starting proxy application..."
|
echo "Starting proxy application..."
|
||||||
/app/proxy >/tmp/proxy.log 2>&1 &
|
/app/proxy >/tmp/proxy.log 2>&1 &
|
||||||
|
|||||||
@ -44,11 +44,6 @@ const (
|
|||||||
TOSRegion = "TOS_REGION"
|
TOSRegion = "TOS_REGION"
|
||||||
TOSEndpoint = "TOS_ENDPOINT"
|
TOSEndpoint = "TOS_ENDPOINT"
|
||||||
TOSBucketEndpoint = "TOS_BUCKET_ENDPOINT"
|
TOSBucketEndpoint = "TOS_BUCKET_ENDPOINT"
|
||||||
S3AccessKey = "S3_ACCESS_KEY"
|
|
||||||
S3SecretKey = "S3_SECRET_KEY"
|
|
||||||
S3Region = "S3_REGION"
|
|
||||||
S3Endpoint = "S3_ENDPOINT"
|
|
||||||
S3BucketEndpoint = "S3_BUCKET_ENDPOINT"
|
|
||||||
|
|
||||||
HostKeyInCtx = "HOST_KEY_IN_CTX"
|
HostKeyInCtx = "HOST_KEY_IN_CTX"
|
||||||
RequestSchemeKeyInCtx = "REQUEST_SCHEME_IN_CTX"
|
RequestSchemeKeyInCtx = "REQUEST_SCHEME_IN_CTX"
|
||||||
@ -112,8 +107,3 @@ const (
|
|||||||
ApplyUploadActionURI = "/api/common/upload/apply_upload_action"
|
ApplyUploadActionURI = "/api/common/upload/apply_upload_action"
|
||||||
UploadURI = "/api/common/upload"
|
UploadURI = "/api/common/upload"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
|
||||||
DisableUserRegistration = "DISABLE_USER_REGISTRATION"
|
|
||||||
AllowRegistrationEmail = "ALLOW_REGISTRATION_EMAIL"
|
|
||||||
)
|
|
||||||
|
|||||||
@ -38,8 +38,6 @@ const (
|
|||||||
ErrPluginToolsCheckFailed = 109000011
|
ErrPluginToolsCheckFailed = 109000011
|
||||||
ErrPluginParseToolRespFailed = 109000012
|
ErrPluginParseToolRespFailed = 109000012
|
||||||
ErrPluginOAuthFailed = 109000013
|
ErrPluginOAuthFailed = 109000013
|
||||||
ErrPluginIDExist = 109000014
|
|
||||||
ErrToolIDExist = 109000015
|
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
@ -47,17 +45,6 @@ const (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
|
|
||||||
code.Register(
|
|
||||||
ErrPluginIDExist,
|
|
||||||
"Plugin ID already exists : {plugin_id}",
|
|
||||||
code.WithAffectStability(false),
|
|
||||||
)
|
|
||||||
code.Register(
|
|
||||||
ErrToolIDExist,
|
|
||||||
"Tool ID already exists : {tool_id}",
|
|
||||||
code.WithAffectStability(false),
|
|
||||||
)
|
|
||||||
code.Register(
|
code.Register(
|
||||||
ErrPluginPermissionCode,
|
ErrPluginPermissionCode,
|
||||||
fmt.Sprintf("unauthorized access : {%s}", PluginMsgKey),
|
fmt.Sprintf("unauthorized access : {%s}", PluginMsgKey),
|
||||||
|
|||||||
@ -31,17 +31,9 @@ const (
|
|||||||
ErrUserResourceNotFound = 700000005
|
ErrUserResourceNotFound = 700000005
|
||||||
ErrUserInvalidParamCode = 700000006
|
ErrUserInvalidParamCode = 700000006
|
||||||
ErrUserPermissionCode = 700000007
|
ErrUserPermissionCode = 700000007
|
||||||
ErrNotAllowedRegisterCode = 700000008
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
|
|
||||||
code.Register(
|
|
||||||
ErrNotAllowedRegisterCode,
|
|
||||||
"The user registration has been disabled by the administrator. Please contact the administrator!",
|
|
||||||
code.WithAffectStability(false),
|
|
||||||
)
|
|
||||||
|
|
||||||
code.Register(
|
code.Register(
|
||||||
ErrUserPermissionCode,
|
ErrUserPermissionCode,
|
||||||
"unauthorized access : {msg}",
|
"unauthorized access : {msg}",
|
||||||
|
|||||||
@ -15,7 +15,7 @@
|
|||||||
"ignoreMissingScript": true,
|
"ignoreMissingScript": true,
|
||||||
"enableParallelism": true,
|
"enableParallelism": true,
|
||||||
"incremental": true,
|
"incremental": true,
|
||||||
"shellCommand": "eslint ./ --cache --quiet",
|
"shellCommand": "eslint ./ --cache",
|
||||||
"allowWarningsInSuccessfulBuild": true,
|
"allowWarningsInSuccessfulBuild": true,
|
||||||
"summary": "⭐️️ Run lint command for each package",
|
"summary": "⭐️️ Run lint command for each package",
|
||||||
"safeForSimultaneousRushProcesses": true
|
"safeForSimultaneousRushProcesses": true
|
||||||
|
|||||||
@ -35,7 +35,7 @@ export VE_IMAGEX_TEMPLATE=""
|
|||||||
export VE_IMAGEX_UPLOAD_HOST="https://imagex.volcengineapi.com"
|
export VE_IMAGEX_UPLOAD_HOST="https://imagex.volcengineapi.com"
|
||||||
|
|
||||||
# Storage component
|
# Storage component
|
||||||
export STORAGE_TYPE="minio" # minio / tos / s3
|
export STORAGE_TYPE="minio" # minio / tos
|
||||||
export STORAGE_BUCKET="opencoze"
|
export STORAGE_BUCKET="opencoze"
|
||||||
# MiniIO
|
# MiniIO
|
||||||
export MINIO_ROOT_USER=minioadmin
|
export MINIO_ROOT_USER=minioadmin
|
||||||
@ -53,13 +53,6 @@ export TOS_ENDPOINT=https://tos-cn-beijing.volces.com
|
|||||||
export TOS_BUCKET_ENDPOINT=https://opencoze.tos-cn-beijing.volces.com
|
export TOS_BUCKET_ENDPOINT=https://opencoze.tos-cn-beijing.volces.com
|
||||||
export TOS_REGION=cn-beijing
|
export TOS_REGION=cn-beijing
|
||||||
|
|
||||||
# S3
|
|
||||||
export S3_ACCESS_KEY=
|
|
||||||
export S3_SECRET_KEY=
|
|
||||||
export S3_ENDPOINT=
|
|
||||||
export S3_BUCKET_ENDPOINT=
|
|
||||||
export S3_REGION=
|
|
||||||
|
|
||||||
# Elasticsearch
|
# Elasticsearch
|
||||||
export ES_ADDR="http://localhost:9200"
|
export ES_ADDR="http://localhost:9200"
|
||||||
export ES_VERSION="v8"
|
export ES_VERSION="v8"
|
||||||
@ -90,8 +83,8 @@ export VIKING_DB_MODEL_NAME="" # if vikingdb model name is not set, you need to
|
|||||||
# Settings for Embedding
|
# Settings for Embedding
|
||||||
# The Embedding model relied on by knowledge base vectorization does not need to be configured
|
# The Embedding model relied on by knowledge base vectorization does not need to be configured
|
||||||
# if the vector database comes with built-in Embedding functionality (such as VikingDB). Currently,
|
# if the vector database comes with built-in Embedding functionality (such as VikingDB). Currently,
|
||||||
# Coze Studio supports three access methods: openai, ark, ollama, and custom http. Users can simply choose one of them when using
|
# Coze Studio supports three access methods: openai, ark, and custom http. Users can simply choose one of them when using
|
||||||
# embedding type: openai / ark / ollama / http
|
# embedding type: openai / ark / http
|
||||||
export EMBEDDING_TYPE="ark"
|
export EMBEDDING_TYPE="ark"
|
||||||
# openai embedding
|
# openai embedding
|
||||||
export OPENAI_EMBEDDING_BASE_URL="" # (string) OpenAI base_url
|
export OPENAI_EMBEDDING_BASE_URL="" # (string) OpenAI base_url
|
||||||
@ -108,10 +101,6 @@ export ARK_EMBEDDING_AK=""
|
|||||||
export ARK_EMBEDDING_DIMS="2048"
|
export ARK_EMBEDDING_DIMS="2048"
|
||||||
export ARK_EMBEDDING_BASE_URL=""
|
export ARK_EMBEDDING_BASE_URL=""
|
||||||
|
|
||||||
# ollama embedding
|
|
||||||
export OLLAMA_EMBEDDING_BASE_URL=""
|
|
||||||
export OLLAMA_EMBEDDING_MODEL=""
|
|
||||||
export OLLAMA_EMBEDDING_DIMS=""
|
|
||||||
|
|
||||||
# http embedding
|
# http embedding
|
||||||
export HTTP_EMBEDDING_ADDR="http://127.0.0.1:6543"
|
export HTTP_EMBEDDING_ADDR="http://127.0.0.1:6543"
|
||||||
@ -201,10 +190,4 @@ export CODE_RUNNER_NODE_MODULES_DIR=""
|
|||||||
# Code execution timeout, default 60 seconds. e.g. "2.56"
|
# Code execution timeout, default 60 seconds. e.g. "2.56"
|
||||||
export CODE_RUNNER_TIMEOUT_SECONDS=""
|
export CODE_RUNNER_TIMEOUT_SECONDS=""
|
||||||
# Code execution memory limit, default 100MB. e.g. "256"
|
# Code execution memory limit, default 100MB. e.g. "256"
|
||||||
export CODE_RUNNER_MEMORY_LIMIT_MB=""
|
export CODE_RUNNER_MEMORY_LIMIT_MB=""
|
||||||
|
|
||||||
# The function of registration controller
|
|
||||||
# If you want to disable the registration feature, set DISABLE_USER_REGISTRATION to true. You can then control allowed registrations via a whitelist with ALLOW_REGISTRATION_EMAIL.
|
|
||||||
export DISABLE_USER_REGISTRATION="" # default "", if you want to disable, set to true
|
|
||||||
export ALLOW_REGISTRATION_EMAIL="" # is a list of email addresses, separated by ",". Example: "11@example.com,22@example.com"
|
|
||||||
|
|
||||||
@ -65,6 +65,8 @@ services:
|
|||||||
depends_on:
|
depends_on:
|
||||||
minio-setup:
|
minio-setup:
|
||||||
condition: service_completed_successfully
|
condition: service_completed_successfully
|
||||||
|
elasticsearch-setup:
|
||||||
|
condition: service_completed_successfully
|
||||||
mysql-setup-schema:
|
mysql-setup-schema:
|
||||||
condition: service_completed_successfully
|
condition: service_completed_successfully
|
||||||
mysql-setup-init-sql:
|
mysql-setup-init-sql:
|
||||||
@ -407,6 +409,27 @@ services:
|
|||||||
networks:
|
networks:
|
||||||
- coze-network
|
- coze-network
|
||||||
|
|
||||||
|
elasticsearch-setup:
|
||||||
|
image: alpine/curl:8.12.1
|
||||||
|
container_name: coze-elasticsearch-setup
|
||||||
|
profiles: ['middleware', 'volcano-setup']
|
||||||
|
env_file: *env_file
|
||||||
|
depends_on:
|
||||||
|
elasticsearch:
|
||||||
|
condition: service_healthy
|
||||||
|
volumes:
|
||||||
|
- ./volumes/elasticsearch/setup_es.sh:/setup_es.sh
|
||||||
|
- ./volumes/elasticsearch/es_index_schema:/es_index_schema
|
||||||
|
command:
|
||||||
|
- /bin/sh
|
||||||
|
- -c
|
||||||
|
- |
|
||||||
|
set -ex
|
||||||
|
/setup_es.sh
|
||||||
|
echo 'Elasticsearch setup complete.'
|
||||||
|
networks:
|
||||||
|
- coze-network
|
||||||
|
restart: 'no'
|
||||||
minio-setup:
|
minio-setup:
|
||||||
image: minio/mc:RELEASE.2025-05-21T01-59-54Z-cpuv1
|
image: minio/mc:RELEASE.2025-05-21T01-59-54Z-cpuv1
|
||||||
container_name: coze-minio-setup
|
container_name: coze-minio-setup
|
||||||
@ -539,6 +562,8 @@ services:
|
|||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
minio-setup:
|
minio-setup:
|
||||||
condition: service_completed_successfully
|
condition: service_completed_successfully
|
||||||
|
elasticsearch-setup:
|
||||||
|
condition: service_completed_successfully
|
||||||
mysql-setup-init-sql:
|
mysql-setup-init-sql:
|
||||||
condition: service_completed_successfully
|
condition: service_completed_successfully
|
||||||
command: ['/app/bootstrap.sh']
|
command: ['/app/bootstrap.sh']
|
||||||
|
|||||||
@ -1,61 +1,14 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
# Parse command-line arguments
|
if [[ "$ES_ADDR" == *"localhost"* || "$ES_ADDR" == *"127.0.0.1"* ]]; then
|
||||||
while [ $# -gt 0 ]; do
|
echo "ES_ADDR is localhost, using docker address: http://elasticsearch:9200"
|
||||||
case "$1" in
|
ES_ADDR="http://elasticsearch:9200"
|
||||||
--es-address)
|
|
||||||
case "$2" in
|
|
||||||
"" | -*) echo "Error: Missing value for $1" >&2; exit 1;;
|
|
||||||
esac
|
|
||||||
ES_ADDR_ARG="$2"
|
|
||||||
shift 2
|
|
||||||
;;
|
|
||||||
--index-dir)
|
|
||||||
case "$2" in
|
|
||||||
"" | -*) echo "Error: Missing value for $1" >&2; exit 1;;
|
|
||||||
esac
|
|
||||||
INDEX_DIR_ARG="$2"
|
|
||||||
shift 2
|
|
||||||
;;
|
|
||||||
--docker-host)
|
|
||||||
case "$2" in
|
|
||||||
"true" | "false") REPLACE_ES_ADDR_WITH_DOCKER_HOST_ARG="$2" ;;
|
|
||||||
*) echo "Error: Invalid value for $1. Must be 'true' or 'false'" >&2; exit 1;;
|
|
||||||
esac
|
|
||||||
shift 2
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
# unknown option
|
|
||||||
shift
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
|
|
||||||
# If ES_ADDR_ARG argument is provided, use it. Otherwise, use environment variable or default logic.
|
|
||||||
if [ -n "$ES_ADDR_ARG" ]; then
|
|
||||||
ES_ADDR=$ES_ADDR_ARG
|
|
||||||
fi
|
|
||||||
|
|
||||||
REPLACE_ES_ADDR=${REPLACE_ES_ADDR_WITH_DOCKER_HOST_ARG:-true}
|
|
||||||
if [ "$REPLACE_ES_ADDR" = "true" ]; then
|
|
||||||
case "$ES_ADDR" in
|
|
||||||
*localhost*|*"127.0.0.1"*)
|
|
||||||
echo "ES_ADDR is localhost, using docker address: http://elasticsearch:9200"
|
|
||||||
ES_ADDR="http://elasticsearch:9200"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
fi
|
|
||||||
|
|
||||||
# If INDEX_DIR_ARG argument is provided, use it. Otherwise, use the default.
|
|
||||||
if [ -n "$INDEX_DIR_ARG" ]; then
|
|
||||||
INDEX_DIR=$INDEX_DIR_ARG
|
|
||||||
else
|
|
||||||
INDEX_DIR=/es_index_schema
|
|
||||||
fi
|
fi
|
||||||
|
# ES_ADDR=http://localhost:31160
|
||||||
|
INDEX_DIR=/es_index_schema
|
||||||
|
|
||||||
echo "ES_ADDR: $ES_ADDR"
|
echo "ES_ADDR: $ES_ADDR"
|
||||||
echo "INDEX_DIR: $INDEX_DIR"
|
|
||||||
|
|
||||||
AUTH_PARAM=""
|
AUTH_PARAM=""
|
||||||
if [ -n "$ES_USERNAME" ]; then
|
if [ -n "$ES_USERNAME" ]; then
|
||||||
@ -85,32 +38,30 @@ if [ -z "$ES_TEMPLATES" ]; then
|
|||||||
exit 1
|
exit 1
|
||||||
else
|
else
|
||||||
# Add index creation logic
|
# Add index creation logic
|
||||||
|
echo -e "🔄 Creating Elasticsearch indexes..."
|
||||||
for template_file in $ES_TEMPLATES; do
|
for template_file in $ES_TEMPLATES; do
|
||||||
|
|
||||||
template_name=$(basename "$template_file" | sed 's/\.index-template\.json$//')
|
template_name=$(basename "$template_file" | sed 's/\.index-template\.json$//')
|
||||||
# Check if index template exists
|
echo -e "➡️ Registering template: $template_name"
|
||||||
if curl -s -f $AUTH_PARAM -I "${ES_ADDR}/_index_template/$template_name" >/dev/null; then
|
|
||||||
echo -e "ℹ️ Index template $template_name already exists"
|
# Attempt to register index template
|
||||||
|
response=$(curl -s $AUTH_PARAM -X PUT "${ES_ADDR}/_index_template/$template_name" \
|
||||||
|
-H "Content-Type: application/json" \
|
||||||
|
-d @"$template_file" 2>&1)
|
||||||
|
|
||||||
|
# Check if successful
|
||||||
|
if echo "$response" | grep -q '"acknowledged":true'; then
|
||||||
|
echo -e "✅ Template $template_name registered successfully"
|
||||||
else
|
else
|
||||||
echo -e "➡️ Registering template: $template_name"
|
echo -e "❌ Failed to register template $template_name. Response: $response"
|
||||||
|
exit 1
|
||||||
# Attempt to register index template
|
|
||||||
response=$(curl -s $AUTH_PARAM -X PUT "${ES_ADDR}/_index_template/$template_name" \
|
|
||||||
-H "Content-Type: application/json" \
|
|
||||||
-d @"$template_file" 2>&1)
|
|
||||||
|
|
||||||
# Check if successful
|
|
||||||
if echo "$response" | grep -q '"acknowledged":true'; then
|
|
||||||
echo -e "✅ Template $template_name registered successfully"
|
|
||||||
else
|
|
||||||
echo -e "❌ Failed to register template $template_name. Response: $response"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
index_name=$(basename "$template_file" | sed 's/\.index-template\.json$//')
|
index_name=$(basename "$template_file" | sed 's/\.index-template\.json$//')
|
||||||
|
echo -e "➡️ Creating index: $index_name"
|
||||||
|
|
||||||
# Check if index exists
|
# Check if index exists
|
||||||
if ! curl -s -f $AUTH_PARAM "${ES_ADDR}/_cat/indices/$index_name" >/dev/null; then
|
if ! curl -s -f $AUTH_PARAM "${ES_ADDR}/_cat/indices/$index_name" >/dev/null; then
|
||||||
echo -e "➡️ Creating index: $index_name"
|
|
||||||
# Create index (matching template's index_patterns)
|
# Create index (matching template's index_patterns)
|
||||||
curl $AUTH_PARAM -X PUT "${ES_ADDR}/$index_name" -H "Content-Type: application/json"
|
curl $AUTH_PARAM -X PUT "${ES_ADDR}/$index_name" -H "Content-Type: application/json"
|
||||||
echo ""
|
echo ""
|
||||||
@ -139,4 +90,4 @@ else
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
echo "Elasticsearch setup completed."
|
echo "Elasticsearch setup completed."
|
||||||
exit 0
|
exit 0
|
||||||
|
|||||||
BIN
docker/volumes/minio/tosutil
Executable file
BIN
docker/volumes/minio/tosutil
Executable file
Binary file not shown.
@ -1,122 +1 @@
|
|||||||
# Coze Studio Frontend
|
TODO: something here
|
||||||
|
|
||||||
This is the frontend project of Coze Studio, an AI Agent development platform built with monorepo architecture, based on React 18 and modern frontend technology stack.
|
|
||||||
|
|
||||||
## 🏗️ Project Architecture
|
|
||||||
|
|
||||||
### Core Technology Stack
|
|
||||||
- **Framework**: React 18 + TypeScript
|
|
||||||
- **Build Tool**: Rsbuild
|
|
||||||
- **Package Manager**: Rush + PNPM
|
|
||||||
- **Routing**: React Router v6
|
|
||||||
- **State Management**: Zustand
|
|
||||||
- **UI Components**: @coze-arch/coze-design
|
|
||||||
- **Internationalization**: @coze-arch/i18n
|
|
||||||
|
|
||||||
### Directory Structure
|
|
||||||
|
|
||||||
```
|
|
||||||
frontend/
|
|
||||||
├── apps/ # Application layer
|
|
||||||
│ └── coze-studio/ # Main application
|
|
||||||
├── packages/ # Core packages
|
|
||||||
│ ├── agent-ide/ # AI Agent development environment
|
|
||||||
│ ├── arch/ # Architecture infrastructure
|
|
||||||
│ ├── common/ # Common components and utilities
|
|
||||||
│ ├── components/ # UI component library
|
|
||||||
│ ├── data/ # Data layer
|
|
||||||
│ ├── devops/ # DevOps tools
|
|
||||||
│ ├── foundation/ # Foundation infrastructure
|
|
||||||
│ ├── project-ide/ # Project development environment
|
|
||||||
│ ├── studio/ # Studio core features
|
|
||||||
│ └── workflow/ # Workflow engine
|
|
||||||
├── config/ # Configuration files
|
|
||||||
│ ├── eslint-config/ # ESLint configuration
|
|
||||||
│ ├── rsbuild-config/ # Rsbuild build configuration
|
|
||||||
│ ├── ts-config/ # TypeScript configuration
|
|
||||||
│ ├── postcss-config/ # PostCSS configuration
|
|
||||||
│ ├── stylelint-config/ # Stylelint configuration
|
|
||||||
│ ├── tailwind-config/ # Tailwind CSS configuration
|
|
||||||
│ └── vitest-config/ # Vitest testing configuration
|
|
||||||
└── infra/ # Infrastructure tools
|
|
||||||
├── idl/ # Interface Definition Language tools
|
|
||||||
├── plugins/ # Build plugins
|
|
||||||
└── utils/ # Utility libraries
|
|
||||||
```
|
|
||||||
|
|
||||||
## 🚀 Quick Start
|
|
||||||
|
|
||||||
### Prerequisites
|
|
||||||
- Node.js >= 21
|
|
||||||
- PNPM 8.15.8
|
|
||||||
- Rush 5.147.1
|
|
||||||
|
|
||||||
### Install Dependencies
|
|
||||||
```bash
|
|
||||||
# Run in project root directory
|
|
||||||
rush install
|
|
||||||
# update
|
|
||||||
rush update
|
|
||||||
```
|
|
||||||
|
|
||||||
### Development Mode
|
|
||||||
```bash
|
|
||||||
# Start development server
|
|
||||||
cd apps/coze-studio
|
|
||||||
npm run dev
|
|
||||||
# or use rushx
|
|
||||||
rushx dev
|
|
||||||
```
|
|
||||||
|
|
||||||
### Production Build
|
|
||||||
```bash
|
|
||||||
# Build application
|
|
||||||
cd apps/coze-studio
|
|
||||||
npm run build
|
|
||||||
# or use rushx
|
|
||||||
rushx build
|
|
||||||
```
|
|
||||||
|
|
||||||
## 📦 Core Modules
|
|
||||||
|
|
||||||
### Agent IDE
|
|
||||||
- **agent-ide**: AI Agent integrated development environment
|
|
||||||
- **prompt**: Prompt editor
|
|
||||||
- **tool**: Tool configuration management
|
|
||||||
- **workflow**: Workflow integration
|
|
||||||
|
|
||||||
### Architecture Layer (arch)
|
|
||||||
- **bot-api**: API interface layer
|
|
||||||
- **bot-hooks**: React Hooks library
|
|
||||||
- **foundation-sdk**: Foundation SDK
|
|
||||||
- **i18n**: Internationalization support
|
|
||||||
- **bot-flags**: Feature flags management
|
|
||||||
- **web-context**: Web context utilities
|
|
||||||
|
|
||||||
### Workflow Engine (workflow)
|
|
||||||
- **fabric-canvas**: Canvas rendering engine
|
|
||||||
- **nodes**: Node component library
|
|
||||||
- **sdk**: Workflow SDK
|
|
||||||
- **playground**: Debug runtime environment
|
|
||||||
|
|
||||||
### Data Layer (data)
|
|
||||||
- **knowledge**: Knowledge base management
|
|
||||||
- **memory**: Memory system
|
|
||||||
- **common**: Common data processing
|
|
||||||
|
|
||||||
## 🔧 Development Standards
|
|
||||||
|
|
||||||
### Code Quality
|
|
||||||
- Code formatting with ESLint + Prettier
|
|
||||||
- TypeScript strict mode
|
|
||||||
- Unit test coverage requirements
|
|
||||||
- Team-based tier management (level-1 to level-4)
|
|
||||||
|
|
||||||
### Team Collaboration
|
|
||||||
- Rush-based monorepo management
|
|
||||||
- Workspace dependency management
|
|
||||||
- Unified build and release process
|
|
||||||
|
|
||||||
## 📄 License
|
|
||||||
|
|
||||||
Apache License 2.0
|
|
||||||
|
|||||||
@ -1,3 +1,19 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2025 coze-dev Authors
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
import OriginPkgRootWebpackPlugin from '@coze-arch/pkg-root-webpack-plugin-origin';
|
import OriginPkgRootWebpackPlugin from '@coze-arch/pkg-root-webpack-plugin-origin';
|
||||||
type PkgRootWebpackPluginOptions = Record<string, unknown>;
|
type PkgRootWebpackPluginOptions = Record<string, unknown>;
|
||||||
declare class PkgRootWebpackPlugin extends OriginPkgRootWebpackPlugin {
|
declare class PkgRootWebpackPlugin extends OriginPkgRootWebpackPlugin {
|
||||||
|
|||||||
@ -1,19 +1,4 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
/*
|
|
||||||
* Copyright 2025 coze-dev Authors
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
var __importDefault = (this && this.__importDefault) || function (mod) {
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||||||
return (mod && mod.__esModule) ? mod : { "default": mod };
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||||||
};
|
};
|
||||||
|
|||||||
@ -13,31 +13,25 @@
|
|||||||
* See the License for the specific language governing permissions and
|
* See the License for the specific language governing permissions and
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { useState, type FC } from 'react';
|
import { useState, type FC } from 'react';
|
||||||
|
|
||||||
import { groupBy } from 'lodash-es';
|
import { groupBy } from 'lodash-es';
|
||||||
import { useBotSkillStore } from '@coze-studio/bot-detail-store/bot-skill';
|
|
||||||
import { I18n } from '@coze-arch/i18n';
|
|
||||||
import { IconCozCross } from '@coze-arch/coze-design/icons';
|
|
||||||
import {
|
|
||||||
Button,
|
|
||||||
Checkbox,
|
|
||||||
Modal,
|
|
||||||
IconButton,
|
|
||||||
Space,
|
|
||||||
} from '@coze-arch/coze-design';
|
|
||||||
import {
|
|
||||||
type Model,
|
|
||||||
ModelFuncConfigStatus,
|
|
||||||
ModelFuncConfigType,
|
|
||||||
} from '@coze-arch/bot-api/developer_api';
|
|
||||||
import { ToolGroupKey, ToolKey } from '@coze-agent-ide/tool-config';
|
import { ToolGroupKey, ToolKey } from '@coze-agent-ide/tool-config';
|
||||||
import {
|
import {
|
||||||
type useRegisteredToolKeyConfigList,
|
type useRegisteredToolKeyConfigList,
|
||||||
abilityKey2ModelFunctionConfigType,
|
abilityKey2ModelFunctionConfigType,
|
||||||
} from '@coze-agent-ide/tool';
|
} from '@coze-agent-ide/tool';
|
||||||
|
import { I18n } from '@coze-arch/i18n';
|
||||||
|
import {
|
||||||
|
type Model,
|
||||||
|
ModelFuncConfigStatus,
|
||||||
|
ModelFuncConfigType,
|
||||||
|
} from '@coze-arch/bot-api/developer_api';
|
||||||
|
import { useBotSkillStore } from '@coze-studio/bot-detail-store/bot-skill';
|
||||||
import { mergeModelFuncConfigStatus } from '@coze-agent-ide/bot-editor-context-store';
|
import { mergeModelFuncConfigStatus } from '@coze-agent-ide/bot-editor-context-store';
|
||||||
|
import { IconCozCross } from '@coze-arch/coze-design/icons';
|
||||||
|
import { Button, Checkbox, Modal, IconButton, Space } from '@coze-arch/coze-design';
|
||||||
|
|
||||||
type IRegisteredToolKeyConfig = ReturnType<
|
type IRegisteredToolKeyConfig = ReturnType<
|
||||||
typeof useRegisteredToolKeyConfigList
|
typeof useRegisteredToolKeyConfigList
|
||||||
@ -202,7 +196,6 @@ export const checkModelAbility = (
|
|||||||
: ModelFuncConfigType.KnowledgeOnDemandCall
|
: ModelFuncConfigType.KnowledgeOnDemandCall
|
||||||
];
|
];
|
||||||
modelFunctionConfigStatus = mergeModelFuncConfigStatus(
|
modelFunctionConfigStatus = mergeModelFuncConfigStatus(
|
||||||
// @ts-expect-error fix me late
|
|
||||||
autoConfigStatus,
|
autoConfigStatus,
|
||||||
modelFunctionConfigStatus,
|
modelFunctionConfigStatus,
|
||||||
);
|
);
|
||||||
@ -270,7 +263,6 @@ export const confirm = ({
|
|||||||
};
|
};
|
||||||
|
|
||||||
const getGroupTittleByConfigType = (type: ModelFuncConfigType): string =>
|
const getGroupTittleByConfigType = (type: ModelFuncConfigType): string =>
|
||||||
// @ts-expect-error fix me late
|
|
||||||
({
|
({
|
||||||
[ModelFuncConfigType.Plugin]: I18n.t('bot_edit_type_skills'),
|
[ModelFuncConfigType.Plugin]: I18n.t('bot_edit_type_skills'),
|
||||||
[ModelFuncConfigType.Workflow]: I18n.t('bot_edit_type_skills'),
|
[ModelFuncConfigType.Workflow]: I18n.t('bot_edit_type_skills'),
|
||||||
@ -299,7 +291,6 @@ const getGroupTittleByConfigType = (type: ModelFuncConfigType): string =>
|
|||||||
})[type];
|
})[type];
|
||||||
|
|
||||||
const getTitleByConfigType = (type: ModelFuncConfigType): string =>
|
const getTitleByConfigType = (type: ModelFuncConfigType): string =>
|
||||||
// @ts-expect-error fix me late
|
|
||||||
({
|
({
|
||||||
[ModelFuncConfigType.Plugin]: I18n.t('Plugins'),
|
[ModelFuncConfigType.Plugin]: I18n.t('Plugins'),
|
||||||
[ModelFuncConfigType.Workflow]: I18n.t('Workflows'),
|
[ModelFuncConfigType.Workflow]: I18n.t('Workflows'),
|
||||||
|
|||||||
@ -13,7 +13,7 @@
|
|||||||
* See the License for the specific language governing permissions and
|
* See the License for the specific language governing permissions and
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import path from 'path';
|
import path from 'path';
|
||||||
|
|
||||||
import {
|
import {
|
||||||
@ -65,22 +65,7 @@ const updateDTS = ({
|
|||||||
// 创建一个新的文件,用来保存生成的类型定义
|
// 创建一个新的文件,用来保存生成的类型定义
|
||||||
const typeDefs = project.createSourceFile(
|
const typeDefs = project.createSourceFile(
|
||||||
outputFileName,
|
outputFileName,
|
||||||
`/*
|
`/* eslint-disable */
|
||||||
* Copyright 2025 coze-dev Authors
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
/* eslint-disable */
|
|
||||||
/* prettier-ignore */
|
/* prettier-ignore */
|
||||||
// 基于${path.relative(baseDir, inputFileName)}自动生成,请勿手动修改`,
|
// 基于${path.relative(baseDir, inputFileName)}自动生成,请勿手动修改`,
|
||||||
{
|
{
|
||||||
|
|||||||
@ -13,6 +13,7 @@
|
|||||||
* See the License for the specific language governing permissions and
|
* See the License for the specific language governing permissions and
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* eslint-disable */
|
/* eslint-disable */
|
||||||
/* prettier-ignore */
|
/* prettier-ignore */
|
||||||
// 基于src/index.ts自动生成,请勿手动修改
|
// 基于src/index.ts自动生成,请勿手动修改
|
||||||
|
|||||||
@ -13,7 +13,7 @@
|
|||||||
* See the License for the specific language governing permissions and
|
* See the License for the specific language governing permissions and
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import dayjs from 'dayjs';
|
import dayjs from 'dayjs';
|
||||||
import { I18n } from '@coze-arch/i18n';
|
import { I18n } from '@coze-arch/i18n';
|
||||||
|
|
||||||
@ -56,16 +56,8 @@ describe('Date', () => {
|
|||||||
expect(getCurrentTZ().utcOffset()).toBe(60 * 8);
|
expect(getCurrentTZ().utcOffset()).toBe(60 * 8);
|
||||||
});
|
});
|
||||||
it('#formatDate', () => {
|
it('#formatDate', () => {
|
||||||
// 使用固定的时间戳,但验证格式而不是具体的时区值
|
const date = formatDate(1718782764);
|
||||||
const timestamp = 1718782764;
|
expect(date).toBe('2024/06/19 15:39:24');
|
||||||
const date = formatDate(timestamp);
|
|
||||||
// 验证格式是否正确:YYYY/MM/DD HH:mm:ss
|
|
||||||
expect(date).toMatch(/^\d{4}\/\d{2}\/\d{2} \d{2}:\d{2}:\d{2}$/);
|
|
||||||
|
|
||||||
// 验证时间戳转换的一致性:格式化后再解析应该得到相同的dayjs对象的日期部分
|
|
||||||
const formattedDayjs = dayjs(date, 'YYYY/MM/DD HH:mm:ss');
|
|
||||||
const originalDayjs = dayjs.unix(timestamp);
|
|
||||||
expect(formattedDayjs.unix()).toBe(originalDayjs.unix());
|
|
||||||
});
|
});
|
||||||
it('#getRemainTime', () => {
|
it('#getRemainTime', () => {
|
||||||
vi.useFakeTimers();
|
vi.useFakeTimers();
|
||||||
@ -88,7 +80,7 @@ describe('Date', () => {
|
|||||||
describe('format timestamp', () => {
|
describe('format timestamp', () => {
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
const MOCK_NOW = dayjs('2024-09-24 20:00:00');
|
const MOCK_NOW = dayjs('2024-09-24 20:00:00');
|
||||||
vi.setSystemTime(MOCK_NOW.toDate());
|
vi.setSystemTime(MOCK_NOW);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('just now', () => {
|
it('just now', () => {
|
||||||
|
|||||||
@ -13,7 +13,7 @@
|
|||||||
* See the License for the specific language governing permissions and
|
* See the License for the specific language governing permissions and
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { devtools } from 'zustand/middleware';
|
import { devtools } from 'zustand/middleware';
|
||||||
import { create } from 'zustand';
|
import { create } from 'zustand';
|
||||||
import { merge } from 'lodash-es';
|
import { merge } from 'lodash-es';
|
||||||
@ -49,7 +49,7 @@ const getDefaultTextLocalAddUpdateState: () => UploadTextLocalAddUpdateState =
|
|||||||
parsing_type: ParsingType.AccurateParsing,
|
parsing_type: ParsingType.AccurateParsing,
|
||||||
image_extraction: true,
|
image_extraction: true,
|
||||||
table_extraction: true,
|
table_extraction: true,
|
||||||
image_ocr: false,
|
image_ocr: true,
|
||||||
},
|
},
|
||||||
indexStrategy: {},
|
indexStrategy: {},
|
||||||
filterStrategy: [],
|
filterStrategy: [],
|
||||||
|
|||||||
@ -13,7 +13,7 @@
|
|||||||
* See the License for the specific language governing permissions and
|
* See the License for the specific language governing permissions and
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { devtools } from 'zustand/middleware';
|
import { devtools } from 'zustand/middleware';
|
||||||
import { create } from 'zustand';
|
import { create } from 'zustand';
|
||||||
import { merge } from 'lodash-es';
|
import { merge } from 'lodash-es';
|
||||||
@ -48,7 +48,7 @@ const getDefaultTextLocalResegmentState: () => UploadTextLocalResegmentState =
|
|||||||
parsing_type: ParsingType.AccurateParsing,
|
parsing_type: ParsingType.AccurateParsing,
|
||||||
image_extraction: true,
|
image_extraction: true,
|
||||||
table_extraction: true,
|
table_extraction: true,
|
||||||
image_ocr: false,
|
image_ocr: true,
|
||||||
},
|
},
|
||||||
indexStrategy: {},
|
indexStrategy: {},
|
||||||
filterStrategy: [],
|
filterStrategy: [],
|
||||||
|
|||||||
@ -13,7 +13,7 @@
|
|||||||
* See the License for the specific language governing permissions and
|
* See the License for the specific language governing permissions and
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { devtools } from 'zustand/middleware';
|
import { devtools } from 'zustand/middleware';
|
||||||
import { create } from 'zustand';
|
import { create } from 'zustand';
|
||||||
import { merge } from 'lodash-es';
|
import { merge } from 'lodash-es';
|
||||||
@ -36,7 +36,7 @@ const getDefaultTextResegmentState: () => UploadTextResegmentState = () => ({
|
|||||||
parsingStrategy: {
|
parsingStrategy: {
|
||||||
parsing_type: ParsingType.AccurateParsing,
|
parsing_type: ParsingType.AccurateParsing,
|
||||||
image_extraction: true,
|
image_extraction: true,
|
||||||
image_ocr: false,
|
image_ocr: true,
|
||||||
table_extraction: true,
|
table_extraction: true,
|
||||||
},
|
},
|
||||||
filterStrategy: [],
|
filterStrategy: [],
|
||||||
|
|||||||
@ -18,12 +18,4 @@ module.exports = defineConfig({
|
|||||||
},
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
overrides: [
|
|
||||||
{
|
|
||||||
files: ['src/**/namespaces/*.ts'],
|
|
||||||
rules: {
|
|
||||||
'unicorn/filename-case': 'off',
|
|
||||||
},
|
|
||||||
},
|
|
||||||
],
|
|
||||||
});
|
});
|
||||||
|
|||||||
@ -1,4 +1,3 @@
|
|||||||
// eslint-disable unicorn/filename-case
|
|
||||||
/*
|
/*
|
||||||
* Copyright 2025 coze-dev Authors
|
* Copyright 2025 coze-dev Authors
|
||||||
*
|
*
|
||||||
@ -14,7 +13,7 @@
|
|||||||
* See the License for the specific language governing permissions and
|
* See the License for the specific language governing permissions and
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* eslint-disable */
|
/* eslint-disable */
|
||||||
/* tslint:disable */
|
/* tslint:disable */
|
||||||
// @ts-nocheck
|
// @ts-nocheck
|
||||||
|
|||||||
@ -13,7 +13,7 @@
|
|||||||
* See the License for the specific language governing permissions and
|
* See the License for the specific language governing permissions and
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import classNames from 'classnames';
|
import classNames from 'classnames';
|
||||||
import { type TableMemoryItem } from '@coze-studio/bot-detail-store';
|
import { type TableMemoryItem } from '@coze-studio/bot-detail-store';
|
||||||
import {
|
import {
|
||||||
@ -22,6 +22,7 @@ import {
|
|||||||
} from '@coze-data/database-v2-base/constants';
|
} from '@coze-data/database-v2-base/constants';
|
||||||
import { DatabaseFieldTitle } from '@coze-data/database-v2-base/components/database-field-title';
|
import { DatabaseFieldTitle } from '@coze-data/database-v2-base/components/database-field-title';
|
||||||
import { I18n } from '@coze-arch/i18n';
|
import { I18n } from '@coze-arch/i18n';
|
||||||
|
import { FieldItemType } from '@coze-arch/bot-api/memory';
|
||||||
import { IconCozEdit, IconCozTrashCan } from '@coze-arch/coze-design/icons';
|
import { IconCozEdit, IconCozTrashCan } from '@coze-arch/coze-design/icons';
|
||||||
import {
|
import {
|
||||||
type ColumnProps,
|
type ColumnProps,
|
||||||
@ -30,14 +31,12 @@ import {
|
|||||||
Space,
|
Space,
|
||||||
Typography,
|
Typography,
|
||||||
} from '@coze-arch/coze-design';
|
} from '@coze-arch/coze-design';
|
||||||
import { FieldItemType } from '@coze-arch/bot-api/memory';
|
|
||||||
|
|
||||||
import { type TableRow, type TableField, type TableFieldData } from './type';
|
import { type TableRow, type TableField, type TableFieldData } from './type';
|
||||||
|
|
||||||
export function formatTableStructList(
|
export function formatTableStructList(
|
||||||
structList: TableMemoryItem[],
|
structList: TableMemoryItem[],
|
||||||
): TableFieldData[] {
|
): TableFieldData[] {
|
||||||
// @ts-expect-error fix me late
|
|
||||||
return structList.map(item => ({
|
return structList.map(item => ({
|
||||||
fieldName: item.name ?? '',
|
fieldName: item.name ?? '',
|
||||||
fieldDescription: item.desc ?? '',
|
fieldDescription: item.desc ?? '',
|
||||||
@ -174,7 +173,6 @@ export const getTableColumns = ({
|
|||||||
title: () => (
|
title: () => (
|
||||||
<DatabaseFieldTitle
|
<DatabaseFieldTitle
|
||||||
field={item.name}
|
field={item.name}
|
||||||
// @ts-expect-error fix me late
|
|
||||||
type={item.type}
|
type={item.type}
|
||||||
tip={item.desc}
|
tip={item.desc}
|
||||||
required
|
required
|
||||||
|
|||||||
@ -13,7 +13,7 @@
|
|||||||
* See the License for the specific language governing permissions and
|
* See the License for the specific language governing permissions and
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { useEffect, useRef, useState } from 'react';
|
import { useEffect, useRef, useState } from 'react';
|
||||||
|
|
||||||
import dayjs from 'dayjs';
|
import dayjs from 'dayjs';
|
||||||
@ -25,6 +25,7 @@ import {
|
|||||||
} from '@coze-data/database-v2-base/constants';
|
} from '@coze-data/database-v2-base/constants';
|
||||||
import { DatabaseFieldTitle } from '@coze-data/database-v2-base/components/database-field-title';
|
import { DatabaseFieldTitle } from '@coze-data/database-v2-base/components/database-field-title';
|
||||||
import { I18n } from '@coze-arch/i18n';
|
import { I18n } from '@coze-arch/i18n';
|
||||||
|
import { FieldItemType, TableType } from '@coze-arch/bot-api/memory';
|
||||||
import {
|
import {
|
||||||
CozInputNumber,
|
CozInputNumber,
|
||||||
type DatePickerProps,
|
type DatePickerProps,
|
||||||
@ -36,7 +37,6 @@ import {
|
|||||||
withField,
|
withField,
|
||||||
type CommonFieldProps,
|
type CommonFieldProps,
|
||||||
} from '@coze-arch/coze-design';
|
} from '@coze-arch/coze-design';
|
||||||
import { FieldItemType, TableType } from '@coze-arch/bot-api/memory';
|
|
||||||
|
|
||||||
import {
|
import {
|
||||||
type TableRow,
|
type TableRow,
|
||||||
@ -250,7 +250,6 @@ function getSystemFieldCommonProps(field: TableMemoryItem): FieldCommonProps {
|
|||||||
<DatabaseFieldTitle
|
<DatabaseFieldTitle
|
||||||
field={field.name}
|
field={field.name}
|
||||||
textType="primary"
|
textType="primary"
|
||||||
// @ts-expect-error fix me late
|
|
||||||
type={field.type}
|
type={field.type}
|
||||||
tip={field.desc}
|
tip={field.desc}
|
||||||
required
|
required
|
||||||
|
|||||||
@ -13,7 +13,7 @@
|
|||||||
* See the License for the specific language governing permissions and
|
* See the License for the specific language governing permissions and
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { useMemo } from 'react';
|
import { useMemo } from 'react';
|
||||||
|
|
||||||
import {
|
import {
|
||||||
@ -79,7 +79,6 @@ export const SpanInfoArea = (props: SpanInfoAreaProps) => {
|
|||||||
const { rootSpan, spans } = useSpanTransform({
|
const { rootSpan, spans } = useSpanTransform({
|
||||||
orgSpans: orgDetailSpans ?? [],
|
orgSpans: orgDetailSpans ?? [],
|
||||||
traceAdvanceInfo,
|
traceAdvanceInfo,
|
||||||
// @ts-expect-error fix me late
|
|
||||||
spanCategoryMeta: spanCategory,
|
spanCategoryMeta: spanCategory,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@ -5,8 +5,7 @@
|
|||||||
"stories",
|
"stories",
|
||||||
"./src/**/*.test.ts",
|
"./src/**/*.test.ts",
|
||||||
"vitest.config.ts",
|
"vitest.config.ts",
|
||||||
"setup-vitest.ts",
|
"setup-vitest.ts"
|
||||||
"__mocks__/*.ts"
|
|
||||||
],
|
],
|
||||||
"exclude": ["./dist"],
|
"exclude": ["./dist"],
|
||||||
"references": [
|
"references": [
|
||||||
|
|||||||
@ -13,7 +13,5 @@
|
|||||||
* See the License for the specific language governing permissions and
|
* See the License for the specific language governing permissions and
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
export function useInitOpenPremiumManage(_props: { open: () => void }) {
|
export function useInitOpenPremiumManage(_props: { open: () => void }) {}
|
||||||
// allow empty function
|
|
||||||
}
|
|
||||||
|
|||||||
@ -13,7 +13,7 @@
|
|||||||
* See the License for the specific language governing permissions and
|
* See the License for the specific language governing permissions and
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { merge } from 'lodash-es';
|
import { merge } from 'lodash-es';
|
||||||
import {
|
import {
|
||||||
REPORT_EVENTS as ReportEventNames,
|
REPORT_EVENTS as ReportEventNames,
|
||||||
@ -87,7 +87,6 @@ export const getBotDetailDtoInfo = () => {
|
|||||||
onboarding_info: botSkill.transformVo2Dto.onboarding(onboardingContent),
|
onboarding_info: botSkill.transformVo2Dto.onboarding(onboardingContent),
|
||||||
background_image_info_list: backgroundImageInfoList,
|
background_image_info_list: backgroundImageInfoList,
|
||||||
shortcut_sort: botSkill.transformVo2Dto.shortcut(shortcut),
|
shortcut_sort: botSkill.transformVo2Dto.shortcut(shortcut),
|
||||||
// @ts-expect-error fix me late
|
|
||||||
voices_info: merge(
|
voices_info: merge(
|
||||||
{},
|
{},
|
||||||
botSkill.transformVo2Dto.tts(tts),
|
botSkill.transformVo2Dto.tts(tts),
|
||||||
|
|||||||
@ -13,9 +13,10 @@
|
|||||||
* See the License for the specific language governing permissions and
|
* See the License for the specific language governing permissions and
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { nanoid } from 'nanoid';
|
import { nanoid } from 'nanoid';
|
||||||
import { isNumber, mapValues } from 'lodash-es';
|
import { isNumber, mapValues } from 'lodash-es';
|
||||||
|
import { type ShortCutStruct } from '@coze-agent-ide/tool-config';
|
||||||
import {
|
import {
|
||||||
type PluginStatus,
|
type PluginStatus,
|
||||||
type PluginType,
|
type PluginType,
|
||||||
@ -49,7 +50,6 @@ import {
|
|||||||
DisablePromptCalling,
|
DisablePromptCalling,
|
||||||
} from '@coze-arch/bot-api/playground_api';
|
} from '@coze-arch/bot-api/playground_api';
|
||||||
import { SuggestReplyMode } from '@coze-arch/bot-api/developer_api';
|
import { SuggestReplyMode } from '@coze-arch/bot-api/developer_api';
|
||||||
import { type ShortCutStruct } from '@coze-agent-ide/tool-config';
|
|
||||||
|
|
||||||
import {
|
import {
|
||||||
type WorkFlowItemType,
|
type WorkFlowItemType,
|
||||||
@ -369,7 +369,6 @@ export const transformVo2Dto = {
|
|||||||
databaseList: (
|
databaseList: (
|
||||||
databaseList: DatabaseList,
|
databaseList: DatabaseList,
|
||||||
): BotInfoForUpdate['database_list'] =>
|
): BotInfoForUpdate['database_list'] =>
|
||||||
// @ts-expect-error fix me late
|
|
||||||
databaseList.map(d => ({
|
databaseList.map(d => ({
|
||||||
table_id: d.tableId,
|
table_id: d.tableId,
|
||||||
table_name: d.name,
|
table_name: d.name,
|
||||||
|
|||||||
@ -13,19 +13,21 @@
|
|||||||
* See the License for the specific language governing permissions and
|
* See the License for the specific language governing permissions and
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { type PropsWithChildren } from 'react';
|
import { type PropsWithChildren } from 'react';
|
||||||
|
|
||||||
import {
|
|
||||||
PictureUpload,
|
|
||||||
type RenderAutoGenerateParams,
|
|
||||||
} from '@coze-common/biz-components/picture-upload';
|
|
||||||
import {
|
import {
|
||||||
type DraftProjectCopyRequest,
|
type DraftProjectCopyRequest,
|
||||||
type DraftProjectUpdateRequest,
|
type DraftProjectUpdateRequest,
|
||||||
type DraftProjectCreateRequest,
|
type DraftProjectCreateRequest,
|
||||||
} from '@coze-arch/idl/intelligence_api';
|
} from '@coze-arch/idl/intelligence_api';
|
||||||
import { I18n } from '@coze-arch/i18n';
|
import { I18n } from '@coze-arch/i18n';
|
||||||
|
import { FileBizType, IconType } from '@coze-arch/bot-api/developer_api';
|
||||||
|
import {
|
||||||
|
PictureUpload,
|
||||||
|
type RenderAutoGenerateParams,
|
||||||
|
} from '@coze-common/biz-components/picture-upload';
|
||||||
|
import { botInputLengthService } from '@coze-agent-ide/bot-input-length-limit';
|
||||||
import { IconCozUpload } from '@coze-arch/coze-design/icons';
|
import { IconCozUpload } from '@coze-arch/coze-design/icons';
|
||||||
import {
|
import {
|
||||||
type BaseFormProps,
|
type BaseFormProps,
|
||||||
@ -35,8 +37,6 @@ import {
|
|||||||
useFormApi,
|
useFormApi,
|
||||||
withField,
|
withField,
|
||||||
} from '@coze-arch/coze-design';
|
} from '@coze-arch/coze-design';
|
||||||
import { FileBizType, IconType } from '@coze-arch/bot-api/developer_api';
|
|
||||||
import { botInputLengthService } from '@coze-agent-ide/bot-input-length-limit';
|
|
||||||
|
|
||||||
import { SwitchWithDesc } from '../switch-with-desc';
|
import { SwitchWithDesc } from '../switch-with-desc';
|
||||||
import { type ModifyUploadValueType } from '../../type';
|
import { type ModifyUploadValueType } from '../../type';
|
||||||
@ -66,7 +66,6 @@ export const ProjectForm: React.FC<PropsWithChildren<ProjectFormProps>> = ({
|
|||||||
...formProps
|
...formProps
|
||||||
}) => <Form<ProjectFormValues> {...formProps}>{children}</Form>;
|
}) => <Form<ProjectFormValues> {...formProps}>{children}</Form>;
|
||||||
|
|
||||||
// @ts-expect-error fix me late
|
|
||||||
export const filedKeyMap: Record<
|
export const filedKeyMap: Record<
|
||||||
keyof ProjectFormValues,
|
keyof ProjectFormValues,
|
||||||
keyof ProjectFormValues
|
keyof ProjectFormValues
|
||||||
|
|||||||
@ -13,7 +13,7 @@
|
|||||||
* See the License for the specific language governing permissions and
|
* See the License for the specific language governing permissions and
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { StandardNodeType } from '@coze-workflow/base';
|
import { StandardNodeType } from '@coze-workflow/base';
|
||||||
|
|
||||||
// 默认所有节点可用,可以自定义
|
// 默认所有节点可用,可以自定义
|
||||||
@ -56,7 +56,7 @@ export const getEnabledNodeTypes = (_params: {
|
|||||||
[StandardNodeType.DatabaseDelete]: true,
|
[StandardNodeType.DatabaseDelete]: true,
|
||||||
[StandardNodeType.DatabaseCreate]: true,
|
[StandardNodeType.DatabaseCreate]: true,
|
||||||
// [StandardNodeType.JsonParser]: true,
|
// [StandardNodeType.JsonParser]: true,
|
||||||
[StandardNodeType.JsonStringify]: true,
|
// [StandardNodeType.JsonStringify]: true,
|
||||||
// [StandardNodeType.UpdateConversation]: true,
|
// [StandardNodeType.UpdateConversation]: true,
|
||||||
// [StandardNodeType.DeleteConversation]: true,
|
// [StandardNodeType.DeleteConversation]: true,
|
||||||
// [StandardNodeType.QueryConversationList]: true,
|
// [StandardNodeType.QueryConversationList]: true,
|
||||||
|
|||||||
@ -13,7 +13,7 @@
|
|||||||
* See the License for the specific language governing permissions and
|
* See the License for the specific language governing permissions and
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { StandardNodeType, useWorkflowNode } from '@coze-workflow/base';
|
import { StandardNodeType, useWorkflowNode } from '@coze-workflow/base';
|
||||||
|
|
||||||
import { VariableContent } from '@/node-registries/variable';
|
import { VariableContent } from '@/node-registries/variable';
|
||||||
@ -27,7 +27,6 @@ import { PluginContent } from '@/node-registries/plugin';
|
|||||||
import { OutputContent } from '@/node-registries/output';
|
import { OutputContent } from '@/node-registries/output';
|
||||||
import { LtmContent } from '@/node-registries/ltm';
|
import { LtmContent } from '@/node-registries/ltm';
|
||||||
import { LoopContent } from '@/node-registries/loop';
|
import { LoopContent } from '@/node-registries/loop';
|
||||||
import { JsonStringifyContent } from '@/node-registries/json-stringify';
|
|
||||||
import { IntentContent } from '@/node-registries/intent';
|
import { IntentContent } from '@/node-registries/intent';
|
||||||
import { InputContent } from '@/node-registries/input';
|
import { InputContent } from '@/node-registries/input';
|
||||||
import { ImageCanvasContent } from '@/node-registries/image-canvas';
|
import { ImageCanvasContent } from '@/node-registries/image-canvas';
|
||||||
@ -90,7 +89,6 @@ const ContentMap = {
|
|||||||
[StandardNodeType.TriggerRead]: TriggerReadContent,
|
[StandardNodeType.TriggerRead]: TriggerReadContent,
|
||||||
[StandardNodeType.Api]: PluginContent,
|
[StandardNodeType.Api]: PluginContent,
|
||||||
[StandardNodeType.Variable]: VariableContent,
|
[StandardNodeType.Variable]: VariableContent,
|
||||||
[StandardNodeType.JsonStringify]: JsonStringifyContent,
|
|
||||||
// cli 脚本插入标识(registry),请勿修改/删除此行注释
|
// cli 脚本插入标识(registry),请勿修改/删除此行注释
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -1,4 +1,3 @@
|
|||||||
/* eslint-disable unicorn/filename-case */
|
|
||||||
/*
|
/*
|
||||||
* Copyright 2025 coze-dev Authors
|
* Copyright 2025 coze-dev Authors
|
||||||
*
|
*
|
||||||
@ -14,7 +13,8 @@
|
|||||||
* See the License for the specific language governing permissions and
|
* See the License for the specific language governing permissions and
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/* eslint-disable unicorn/filename-case */
|
||||||
import { type ViewVariableType } from '@coze-workflow/base';
|
import { type ViewVariableType } from '@coze-workflow/base';
|
||||||
|
|
||||||
import { useNodeAvailableVariablesWithNode } from '../../hooks/use-node-available-variables';
|
import { useNodeAvailableVariablesWithNode } from '../../hooks/use-node-available-variables';
|
||||||
|
|||||||
@ -13,7 +13,7 @@
|
|||||||
* See the License for the specific language governing permissions and
|
* See the License for the specific language governing permissions and
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { useShallow } from 'zustand/react/shallow';
|
import { useShallow } from 'zustand/react/shallow';
|
||||||
import { type WorkflowDatabase, ViewVariableType } from '@coze-workflow/base';
|
import { type WorkflowDatabase, ViewVariableType } from '@coze-workflow/base';
|
||||||
import { FieldItemType, type DatabaseInfo } from '@coze-arch/bot-api/memory';
|
import { FieldItemType, type DatabaseInfo } from '@coze-arch/bot-api/memory';
|
||||||
@ -54,7 +54,6 @@ function transformRawDatabaseToDatabase(
|
|||||||
fields: rawDatabase.field_list?.map(field => ({
|
fields: rawDatabase.field_list?.map(field => ({
|
||||||
id: field.alterId as number,
|
id: field.alterId as number,
|
||||||
name: field.name,
|
name: field.name,
|
||||||
// @ts-expect-error fix me late
|
|
||||||
type: fieldItemTypeToViewVariableType(field.type),
|
type: fieldItemTypeToViewVariableType(field.type),
|
||||||
required: field.must_required,
|
required: field.must_required,
|
||||||
description: field.desc,
|
description: field.desc,
|
||||||
|
|||||||
@ -13,7 +13,7 @@
|
|||||||
* See the License for the specific language governing permissions and
|
* See the License for the specific language governing permissions and
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
export { CODE_NODE_REGISTRY } from './code';
|
export { CODE_NODE_REGISTRY } from './code';
|
||||||
export { COMMENT_NODE_REGISTRY } from './comment';
|
export { COMMENT_NODE_REGISTRY } from './comment';
|
||||||
export { DATABASE_NODE_REGISTRY } from './database/database-base';
|
export { DATABASE_NODE_REGISTRY } from './database/database-base';
|
||||||
@ -47,5 +47,4 @@ export { IF_NODE_REGISTRY } from './if';
|
|||||||
export { PLUGIN_NODE_REGISTRY } from './plugin';
|
export { PLUGIN_NODE_REGISTRY } from './plugin';
|
||||||
export { SUB_WORKFLOW_NODE_REGISTRY } from './sub-workflow';
|
export { SUB_WORKFLOW_NODE_REGISTRY } from './sub-workflow';
|
||||||
export { VARIABLE_NODE_REGISTRY } from './variable';
|
export { VARIABLE_NODE_REGISTRY } from './variable';
|
||||||
export { JSON_STRINGIFY_NODE_REGISTRY } from './json-stringify';
|
|
||||||
// cli 脚本插入标识(registry),请勿修改/删除此行注释
|
// cli 脚本插入标识(registry),请勿修改/删除此行注释
|
||||||
|
|||||||
@ -1,84 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2025 coze-dev Authors
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
import {
|
|
||||||
FieldArray,
|
|
||||||
type FieldArrayRenderProps,
|
|
||||||
} from '@flowgram-adapter/free-layout-editor';
|
|
||||||
import type { ViewVariableType, InputValueVO } from '@coze-workflow/base';
|
|
||||||
import { I18n } from '@coze-arch/i18n';
|
|
||||||
|
|
||||||
import { useReadonly } from '@/nodes-v2/hooks/use-readonly';
|
|
||||||
import { ValueExpressionInputField } from '@/node-registries/common/fields';
|
|
||||||
import { FieldArrayItem, FieldRows, Section, type FieldProps } from '@/form';
|
|
||||||
|
|
||||||
interface InputsFieldProps extends FieldProps<InputValueVO[]> {
|
|
||||||
title?: string;
|
|
||||||
paramsTitle?: string;
|
|
||||||
expressionTitle?: string;
|
|
||||||
disabledTypes?: ViewVariableType[];
|
|
||||||
onAppend?: () => InputValueVO;
|
|
||||||
inputPlaceholder?: string;
|
|
||||||
literalDisabled?: boolean;
|
|
||||||
showEmptyText?: boolean;
|
|
||||||
nthCannotDeleted?: number;
|
|
||||||
}
|
|
||||||
|
|
||||||
export const InputsField = ({
|
|
||||||
name,
|
|
||||||
defaultValue,
|
|
||||||
title,
|
|
||||||
tooltip,
|
|
||||||
disabledTypes,
|
|
||||||
inputPlaceholder,
|
|
||||||
literalDisabled,
|
|
||||||
showEmptyText = true,
|
|
||||||
}: InputsFieldProps) => {
|
|
||||||
const readonly = useReadonly();
|
|
||||||
return (
|
|
||||||
<FieldArray<InputValueVO> name={name} defaultValue={defaultValue}>
|
|
||||||
{({ field }: FieldArrayRenderProps<InputValueVO>) => {
|
|
||||||
const { value = [] } = field;
|
|
||||||
const length = value?.length ?? 0;
|
|
||||||
const isEmpty = !length;
|
|
||||||
return (
|
|
||||||
<Section
|
|
||||||
title={title}
|
|
||||||
tooltip={tooltip}
|
|
||||||
isEmpty={showEmptyText && isEmpty}
|
|
||||||
emptyText={I18n.t('workflow_inputs_empty')}
|
|
||||||
>
|
|
||||||
<FieldRows>
|
|
||||||
{field.map((item, index) => (
|
|
||||||
<FieldArrayItem key={item.key} disableRemove hiddenRemove>
|
|
||||||
<div style={{ flex: 3 }}>
|
|
||||||
<ValueExpressionInputField
|
|
||||||
name={`${name}.${index}.input`}
|
|
||||||
disabledTypes={disabledTypes}
|
|
||||||
readonly={readonly}
|
|
||||||
inputPlaceholder={inputPlaceholder}
|
|
||||||
literalDisabled={literalDisabled}
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</FieldArrayItem>
|
|
||||||
))}
|
|
||||||
</FieldRows>
|
|
||||||
</Section>
|
|
||||||
);
|
|
||||||
}}
|
|
||||||
</FieldArray>
|
|
||||||
);
|
|
||||||
};
|
|
||||||
@ -1,32 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2025 coze-dev Authors
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
import { nanoid } from 'nanoid';
|
|
||||||
import { ViewVariableType } from '@coze-workflow/variable';
|
|
||||||
|
|
||||||
// 入参路径,试运行等功能依赖该路径提取参数
|
|
||||||
export const INPUT_PATH = 'inputs.inputParameters';
|
|
||||||
|
|
||||||
// 定义固定出参
|
|
||||||
export const OUTPUTS = [
|
|
||||||
{
|
|
||||||
key: nanoid(),
|
|
||||||
name: 'output',
|
|
||||||
type: ViewVariableType.String,
|
|
||||||
},
|
|
||||||
];
|
|
||||||
|
|
||||||
export const DEFAULT_INPUTS = [{ name: 'input' }];
|
|
||||||
@ -1,36 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2025 coze-dev Authors
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
import { type NodeDataDTO } from '@coze-workflow/base';
|
|
||||||
|
|
||||||
import { type FormData } from './types';
|
|
||||||
import { OUTPUTS } from './constants';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 节点后端数据 -> 前端表单数据
|
|
||||||
*/
|
|
||||||
export const transformOnInit = (value: NodeDataDTO) => ({
|
|
||||||
...(value ?? {}),
|
|
||||||
outputs: value?.outputs ?? OUTPUTS,
|
|
||||||
});
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 前端表单数据 -> 节点后端数据
|
|
||||||
* @param value
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export const transformOnSubmit = (value: FormData): NodeDataDTO =>
|
|
||||||
value as unknown as NodeDataDTO;
|
|
||||||
@ -1,58 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2025 coze-dev Authors
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
import {
|
|
||||||
ValidateTrigger,
|
|
||||||
type FormMetaV2,
|
|
||||||
} from '@flowgram-adapter/free-layout-editor';
|
|
||||||
|
|
||||||
import { createValueExpressionInputValidate } from '@/node-registries/common/validators';
|
|
||||||
import {
|
|
||||||
fireNodeTitleChange,
|
|
||||||
provideNodeOutputVariablesEffect,
|
|
||||||
} from '@/node-registries/common/effects';
|
|
||||||
|
|
||||||
import { type FormData } from './types';
|
|
||||||
import { FormRender } from './form';
|
|
||||||
import { transformOnInit, transformOnSubmit } from './data-transformer';
|
|
||||||
|
|
||||||
export const JSON_STRINGIFY_FORM_META: FormMetaV2<FormData> = {
|
|
||||||
// 节点表单渲染
|
|
||||||
render: () => <FormRender />,
|
|
||||||
|
|
||||||
// 验证触发时机
|
|
||||||
validateTrigger: ValidateTrigger.onChange,
|
|
||||||
|
|
||||||
// 验证规则
|
|
||||||
validate: {
|
|
||||||
// 必填
|
|
||||||
'inputs.inputParameters.0.input': createValueExpressionInputValidate({
|
|
||||||
required: true,
|
|
||||||
}),
|
|
||||||
},
|
|
||||||
|
|
||||||
// 副作用管理
|
|
||||||
effect: {
|
|
||||||
nodeMeta: fireNodeTitleChange,
|
|
||||||
outputs: provideNodeOutputVariablesEffect,
|
|
||||||
},
|
|
||||||
|
|
||||||
// 节点后端数据 -> 前端表单数据
|
|
||||||
formatOnInit: transformOnInit,
|
|
||||||
|
|
||||||
// 前端表单数据 -> 节点后端数据
|
|
||||||
formatOnSubmit: transformOnSubmit,
|
|
||||||
};
|
|
||||||
@ -1,46 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2025 coze-dev Authors
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
import { I18n } from '@coze-arch/i18n';
|
|
||||||
|
|
||||||
import { NodeConfigForm } from '@/node-registries/common/components';
|
|
||||||
|
|
||||||
import { OutputsField } from '../common/fields';
|
|
||||||
import { INPUT_PATH } from './constants';
|
|
||||||
import { InputsField } from './components/inputs';
|
|
||||||
|
|
||||||
export const FormRender = () => (
|
|
||||||
<NodeConfigForm>
|
|
||||||
<InputsField
|
|
||||||
name={INPUT_PATH}
|
|
||||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
||||||
defaultValue={[{ name: 'input' } as any]}
|
|
||||||
title={I18n.t('node_http_request_params')}
|
|
||||||
tooltip={I18n.t('workflow_250429_03')}
|
|
||||||
required={false}
|
|
||||||
layout="horizontal"
|
|
||||||
/>
|
|
||||||
|
|
||||||
<OutputsField
|
|
||||||
title={I18n.t('workflow_detail_node_output')}
|
|
||||||
tooltip={I18n.t('node_http_response_data')}
|
|
||||||
id="jsonStringify-node-outputs"
|
|
||||||
name="outputs"
|
|
||||||
topLevelReadonly={true}
|
|
||||||
customReadonly
|
|
||||||
/>
|
|
||||||
</NodeConfigForm>
|
|
||||||
);
|
|
||||||
@ -1,18 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2025 coze-dev Authors
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
export { JSON_STRINGIFY_NODE_REGISTRY } from './node-registry';
|
|
||||||
export { JsonStringifyContent } from './node-content';
|
|
||||||
@ -1,26 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2025 coze-dev Authors
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
import { InputParameters, Outputs } from '../common/components';
|
|
||||||
|
|
||||||
export function JsonStringifyContent() {
|
|
||||||
return (
|
|
||||||
<>
|
|
||||||
<InputParameters />
|
|
||||||
<Outputs />
|
|
||||||
</>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
@ -1,42 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2025 coze-dev Authors
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
import {
|
|
||||||
DEFAULT_NODE_META_PATH,
|
|
||||||
DEFAULT_OUTPUTS_PATH,
|
|
||||||
} from '@coze-workflow/nodes';
|
|
||||||
import {
|
|
||||||
StandardNodeType,
|
|
||||||
type WorkflowNodeRegistry,
|
|
||||||
} from '@coze-workflow/base';
|
|
||||||
|
|
||||||
import { test, type NodeTestMeta } from './node-test';
|
|
||||||
import { JSON_STRINGIFY_FORM_META } from './form-meta';
|
|
||||||
import { INPUT_PATH } from './constants';
|
|
||||||
|
|
||||||
export const JSON_STRINGIFY_NODE_REGISTRY: WorkflowNodeRegistry<NodeTestMeta> =
|
|
||||||
{
|
|
||||||
type: StandardNodeType.JsonStringify,
|
|
||||||
meta: {
|
|
||||||
nodeDTOType: StandardNodeType.JsonStringify,
|
|
||||||
size: { width: 360, height: 130.7 },
|
|
||||||
nodeMetaPath: DEFAULT_NODE_META_PATH,
|
|
||||||
outputsPath: DEFAULT_OUTPUTS_PATH,
|
|
||||||
inputParametersPath: INPUT_PATH,
|
|
||||||
test,
|
|
||||||
},
|
|
||||||
formMeta: JSON_STRINGIFY_FORM_META,
|
|
||||||
};
|
|
||||||
@ -1,36 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2025 coze-dev Authors
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
import { FlowNodeFormData } from '@flowgram-adapter/free-layout-editor';
|
|
||||||
|
|
||||||
import {
|
|
||||||
type NodeTestMeta,
|
|
||||||
generateParametersToProperties,
|
|
||||||
} from '@/test-run-kit';
|
|
||||||
|
|
||||||
export const test: NodeTestMeta = {
|
|
||||||
generateFormInputProperties(node) {
|
|
||||||
const formData = node
|
|
||||||
.getData(FlowNodeFormData)
|
|
||||||
.formModel.getFormItemValueByPath('/');
|
|
||||||
const parameters = formData?.inputs?.inputParameters;
|
|
||||||
|
|
||||||
return generateParametersToProperties(parameters, {
|
|
||||||
node,
|
|
||||||
});
|
|
||||||
},
|
|
||||||
};
|
|
||||||
export type { NodeTestMeta };
|
|
||||||
@ -1,21 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2025 coze-dev Authors
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
import { type InputValueVO } from '@coze-workflow/base';
|
|
||||||
|
|
||||||
export interface FormData {
|
|
||||||
inputs: { inputParameters: InputValueVO[] };
|
|
||||||
}
|
|
||||||
@ -13,7 +13,7 @@
|
|||||||
* See the License for the specific language governing permissions and
|
* See the License for the specific language governing permissions and
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { VARIABLE_MERGE_NODE_REGISTRY } from '@/nodes-v2/variable-merge';
|
import { VARIABLE_MERGE_NODE_REGISTRY } from '@/nodes-v2/variable-merge';
|
||||||
import { VARIABLE_ASSIGN_NODE_REGISTRY } from '@/nodes-v2/variable-assign';
|
import { VARIABLE_ASSIGN_NODE_REGISTRY } from '@/nodes-v2/variable-assign';
|
||||||
import { LLM_NODE_REGISTRY } from '@/nodes-v2/llm';
|
import { LLM_NODE_REGISTRY } from '@/nodes-v2/llm';
|
||||||
@ -51,7 +51,6 @@ import {
|
|||||||
PLUGIN_NODE_REGISTRY,
|
PLUGIN_NODE_REGISTRY,
|
||||||
SUB_WORKFLOW_NODE_REGISTRY,
|
SUB_WORKFLOW_NODE_REGISTRY,
|
||||||
VARIABLE_NODE_REGISTRY,
|
VARIABLE_NODE_REGISTRY,
|
||||||
JSON_STRINGIFY_NODE_REGISTRY,
|
|
||||||
// cli 脚本插入标识(import),请勿修改/删除此行注释
|
// cli 脚本插入标识(import),请勿修改/删除此行注释
|
||||||
} from '@/node-registries';
|
} from '@/node-registries';
|
||||||
|
|
||||||
@ -70,7 +69,6 @@ import {
|
|||||||
|
|
||||||
export const NODES_V2 = [
|
export const NODES_V2 = [
|
||||||
// cli 脚本插入标识(registry),请勿修改/删除此行注释
|
// cli 脚本插入标识(registry),请勿修改/删除此行注释
|
||||||
JSON_STRINGIFY_NODE_REGISTRY,
|
|
||||||
IF_NODE_REGISTRY,
|
IF_NODE_REGISTRY,
|
||||||
INTENT_NODE_REGISTRY,
|
INTENT_NODE_REGISTRY,
|
||||||
SUB_WORKFLOW_NODE_REGISTRY,
|
SUB_WORKFLOW_NODE_REGISTRY,
|
||||||
|
|||||||
@ -1,15 +1,26 @@
|
|||||||
|
// 所有声明在 rush.json 中的包,需要在 tags 配置中,添加团队和分级描述。描述的枚举如下
|
||||||
{
|
{
|
||||||
"$schema": "./rushx-config.schema.json",
|
"$schema": "./rushx-config.schema.json",
|
||||||
|
// 团队情况,可以自行添加
|
||||||
"team": [
|
"team": [
|
||||||
|
// 负责人:@xukai.luics
|
||||||
"team-automation",
|
"team-automation",
|
||||||
|
// 负责人:@changyang.liu
|
||||||
"team-builder",
|
"team-builder",
|
||||||
|
// 负责人:@linyibin
|
||||||
"team-community",
|
"team-community",
|
||||||
|
// 负责人:@sunshengda
|
||||||
"team-data",
|
"team-data",
|
||||||
|
// 负责人:@xuyuantong, @dingquan
|
||||||
"team-devops",
|
"team-devops",
|
||||||
|
// 负责人:@fanwenjie.fe
|
||||||
"team-arch",
|
"team-arch",
|
||||||
|
// 负责人:@sunkuo
|
||||||
"team-studio",
|
"team-studio",
|
||||||
"team-qa"
|
"team-qa"
|
||||||
],
|
],
|
||||||
|
// 全部分级包
|
||||||
|
// delete 将被删除包,暂不做分级
|
||||||
"level": ["level-1", "level-2", "level-3", "level-4"],
|
"level": ["level-1", "level-2", "level-3", "level-4"],
|
||||||
"codecov": {
|
"codecov": {
|
||||||
"coverage": 20,
|
"coverage": 20,
|
||||||
@ -22,6 +33,7 @@
|
|||||||
"coverage": 30,
|
"coverage": 30,
|
||||||
"incrementCoverage": 60
|
"incrementCoverage": 60
|
||||||
},
|
},
|
||||||
|
// 后续逐步提升这个 level 的增量覆盖率
|
||||||
"level-3": {
|
"level-3": {
|
||||||
"coverage": 0,
|
"coverage": 0,
|
||||||
"incrementCoverage": 0
|
"incrementCoverage": 0
|
||||||
|
|||||||
@ -1,133 +0,0 @@
|
|||||||
id: 2002
|
|
||||||
name: Doubao Model
|
|
||||||
icon_uri: default_icon/doubao_v2.png
|
|
||||||
icon_url: ""
|
|
||||||
description:
|
|
||||||
zh: 豆包模型简介
|
|
||||||
en: doubao model description
|
|
||||||
default_parameters:
|
|
||||||
- name: temperature
|
|
||||||
label:
|
|
||||||
zh: 生成随机性
|
|
||||||
en: Temperature
|
|
||||||
desc:
|
|
||||||
zh: '- **temperature**: 调高温度会使得模型的输出更多样性和创新性,反之,降低温度会使输出内容更加遵循指令要求但减少多样性。建议不要与“Top p”同时调整。'
|
|
||||||
en: '**Temperature**:\n\n- When you increase this value, the model outputs more diverse and innovative content; when you decrease it, the model outputs less diverse content that strictly follows the given instructions.\n- It is recommended not to adjust this value with \"Top p\" at the same time.'
|
|
||||||
type: float
|
|
||||||
min: "0"
|
|
||||||
max: "1"
|
|
||||||
default_val:
|
|
||||||
balance: "0.8"
|
|
||||||
creative: "1"
|
|
||||||
default_val: "1.0"
|
|
||||||
precise: "0.3"
|
|
||||||
precision: 1
|
|
||||||
options: []
|
|
||||||
style:
|
|
||||||
widget: slider
|
|
||||||
label:
|
|
||||||
zh: 生成多样性
|
|
||||||
en: Generation diversity
|
|
||||||
- name: max_tokens
|
|
||||||
label:
|
|
||||||
zh: 最大回复长度
|
|
||||||
en: Response max length
|
|
||||||
desc:
|
|
||||||
zh: 控制模型输出的Tokens 长度上限。通常 100 Tokens 约等于 150 个中文汉字。
|
|
||||||
en: You can specify the maximum length of the tokens output through this value. Typically, 100 tokens are approximately equal to 150 Chinese characters.
|
|
||||||
type: int
|
|
||||||
min: "1"
|
|
||||||
max: "4096"
|
|
||||||
default_val:
|
|
||||||
default_val: "4096"
|
|
||||||
options: []
|
|
||||||
style:
|
|
||||||
widget: slider
|
|
||||||
label:
|
|
||||||
zh: 输入及输出设置
|
|
||||||
en: Input and output settings
|
|
||||||
- name: top_p
|
|
||||||
label:
|
|
||||||
zh: Top P
|
|
||||||
en: Top P
|
|
||||||
desc:
|
|
||||||
zh: '- **Top p 为累计概率**: 模型在生成输出时会从概率最高的词汇开始选择,直到这些词汇的总概率累积达到Top p 值。这样可以限制模型只选择这些高概率的词汇,从而控制输出内容的多样性。建议不要与“生成随机性”同时调整。'
|
|
||||||
en: '**Top P**:\n\n- An alternative to sampling with temperature, where only tokens within the top p probability mass are considered. For example, 0.1 means only the top 10% probability mass tokens are considered.\n- We recommend altering this or temperature, but not both.'
|
|
||||||
type: float
|
|
||||||
min: "0"
|
|
||||||
max: "1"
|
|
||||||
default_val:
|
|
||||||
default_val: "0.7"
|
|
||||||
precision: 2
|
|
||||||
options: []
|
|
||||||
style:
|
|
||||||
widget: slider
|
|
||||||
label:
|
|
||||||
zh: 生成多样性
|
|
||||||
en: Generation diversity
|
|
||||||
- name: response_format
|
|
||||||
label:
|
|
||||||
zh: 输出格式
|
|
||||||
en: Response format
|
|
||||||
desc:
|
|
||||||
zh: '- **文本**: 使用普通文本格式回复\n- **Markdown**: 将引导模型使用Markdown格式输出回复\n- **JSON**: 将引导模型使用JSON格式输出'
|
|
||||||
en: '**Response Format**:\n\n- **Text**: Replies in plain text format\n- **Markdown**: Uses Markdown format for replies\n- **JSON**: Uses JSON format for replies'
|
|
||||||
type: int
|
|
||||||
min: ""
|
|
||||||
max: ""
|
|
||||||
default_val:
|
|
||||||
default_val: "0"
|
|
||||||
options:
|
|
||||||
- label: Text
|
|
||||||
value: "0"
|
|
||||||
- label: Markdown
|
|
||||||
value: "1"
|
|
||||||
- label: JSON
|
|
||||||
value: "2"
|
|
||||||
style:
|
|
||||||
widget: radio_buttons
|
|
||||||
label:
|
|
||||||
zh: 输入及输出设置
|
|
||||||
en: Input and output settings
|
|
||||||
meta:
|
|
||||||
name: Doubao
|
|
||||||
protocol: ark
|
|
||||||
capability:
|
|
||||||
function_call: true
|
|
||||||
input_modal:
|
|
||||||
- text
|
|
||||||
- image
|
|
||||||
input_tokens: 128000
|
|
||||||
json_mode: false
|
|
||||||
max_tokens: 128000
|
|
||||||
output_modal:
|
|
||||||
- text
|
|
||||||
output_tokens: 16384
|
|
||||||
prefix_caching: false
|
|
||||||
reasoning: false
|
|
||||||
prefill_response: false
|
|
||||||
conn_config:
|
|
||||||
base_url: ""
|
|
||||||
api_key: ""
|
|
||||||
timeout: 0s
|
|
||||||
model: ""
|
|
||||||
temperature: 0.1
|
|
||||||
frequency_penalty: 0
|
|
||||||
presence_penalty: 0
|
|
||||||
max_tokens: 4096
|
|
||||||
top_p: 0.7
|
|
||||||
top_k: 0
|
|
||||||
stop: []
|
|
||||||
openai: null
|
|
||||||
claude: null
|
|
||||||
ark:
|
|
||||||
region: ""
|
|
||||||
access_key: ""
|
|
||||||
secret_key: ""
|
|
||||||
retry_times: null
|
|
||||||
custom_header: {}
|
|
||||||
deepseek: null
|
|
||||||
qwen: null
|
|
||||||
gemini: null
|
|
||||||
custom: {}
|
|
||||||
status: 0
|
|
||||||
@ -0,0 +1,74 @@
|
|||||||
|
{
|
||||||
|
"index_patterns": ["coze_resource*"],
|
||||||
|
"template": {
|
||||||
|
"settings": {
|
||||||
|
"number_of_shards": 1,
|
||||||
|
"number_of_replicas": 0,
|
||||||
|
"analysis": {
|
||||||
|
"analyzer": {
|
||||||
|
"text_analyzer": {
|
||||||
|
"type": "custom",
|
||||||
|
"tokenizer": "standard",
|
||||||
|
"filter": ["lowercase", "stop", "snowball"]
|
||||||
|
},
|
||||||
|
"smartcn": {
|
||||||
|
"type": "smartcn"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"mappings": {
|
||||||
|
"dynamic": false,
|
||||||
|
"properties": {
|
||||||
|
"res_type": {
|
||||||
|
"type": "keyword"
|
||||||
|
},
|
||||||
|
"app_id": {
|
||||||
|
"type": "keyword",
|
||||||
|
"null_value": "NULL"
|
||||||
|
},
|
||||||
|
"res_id": {
|
||||||
|
"type": "keyword"
|
||||||
|
},
|
||||||
|
"res_sub_type": {
|
||||||
|
"type": "keyword"
|
||||||
|
},
|
||||||
|
"name": {
|
||||||
|
"type": "text",
|
||||||
|
"analyzer": "smartcn",
|
||||||
|
"search_analyzer": "smartcn",
|
||||||
|
"fields": {
|
||||||
|
"raw": {
|
||||||
|
"type": "keyword"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"owner_id": {
|
||||||
|
"type": "keyword"
|
||||||
|
},
|
||||||
|
"space_id": {
|
||||||
|
"type": "keyword"
|
||||||
|
},
|
||||||
|
"biz_status": {
|
||||||
|
"type": "keyword"
|
||||||
|
},
|
||||||
|
"publish_status": {
|
||||||
|
"type": "keyword"
|
||||||
|
},
|
||||||
|
"create_time": {
|
||||||
|
"type": "long"
|
||||||
|
},
|
||||||
|
"update_time": {
|
||||||
|
"type": "long"
|
||||||
|
},
|
||||||
|
"publish_time": {
|
||||||
|
"type": "long"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"priority": 200,
|
||||||
|
"_meta": {
|
||||||
|
"description": "resource library's index template"
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,79 @@
|
|||||||
|
{
|
||||||
|
"index_patterns": ["project_draft*"],
|
||||||
|
"template": {
|
||||||
|
"settings": {
|
||||||
|
"number_of_shards": 1,
|
||||||
|
"number_of_replicas": 0,
|
||||||
|
"analysis": {
|
||||||
|
"analyzer": {
|
||||||
|
"text_analyzer": {
|
||||||
|
"type": "custom",
|
||||||
|
"tokenizer": "standard",
|
||||||
|
"filter": ["lowercase", "stop", "snowball"]
|
||||||
|
},
|
||||||
|
"smartcn": {
|
||||||
|
"type": "smartcn"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"mappings": {
|
||||||
|
"dynamic": false,
|
||||||
|
"properties": {
|
||||||
|
"create_time": {
|
||||||
|
"type": "long"
|
||||||
|
},
|
||||||
|
"has_published": {
|
||||||
|
"type": "keyword"
|
||||||
|
},
|
||||||
|
"id": {
|
||||||
|
"type": "keyword"
|
||||||
|
},
|
||||||
|
"name": {
|
||||||
|
"type": "text",
|
||||||
|
"analyzer": "smartcn",
|
||||||
|
"search_analyzer": "smartcn",
|
||||||
|
"fields": {
|
||||||
|
"raw": {
|
||||||
|
"type": "keyword"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"owner_id": {
|
||||||
|
"type": "keyword"
|
||||||
|
},
|
||||||
|
"publish_time": {
|
||||||
|
"type": "long"
|
||||||
|
},
|
||||||
|
"space_id": {
|
||||||
|
"type": "keyword"
|
||||||
|
},
|
||||||
|
"status": {
|
||||||
|
"type": "keyword"
|
||||||
|
},
|
||||||
|
"type": {
|
||||||
|
"type": "keyword"
|
||||||
|
},
|
||||||
|
"update_time": {
|
||||||
|
"type": "long"
|
||||||
|
},
|
||||||
|
"fav_time": {
|
||||||
|
"type": "long"
|
||||||
|
},
|
||||||
|
"recently_open_time": {
|
||||||
|
"type": "long"
|
||||||
|
},
|
||||||
|
"is_fav": {
|
||||||
|
"type": "keyword"
|
||||||
|
},
|
||||||
|
"is_recently_open": {
|
||||||
|
"type": "keyword"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"priority": 200,
|
||||||
|
"_meta": {
|
||||||
|
"description": "Project draft index template"
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -57,10 +57,8 @@ spec:
|
|||||||
image: "{{ .Values.cozeServer.image.repository }}:{{ .Values.cozeServer.image.tag }}"
|
image: "{{ .Values.cozeServer.image.repository }}:{{ .Values.cozeServer.image.tag }}"
|
||||||
imagePullPolicy: {{ .Values.cozeServer.image.pullPolicy }}
|
imagePullPolicy: {{ .Values.cozeServer.image.pullPolicy }}
|
||||||
ports:
|
ports:
|
||||||
{{- range .Values.cozeServer.service.ports }}
|
- name: http
|
||||||
- name: {{ .name }}
|
containerPort: {{ .Values.cozeServer.service.port }}
|
||||||
containerPort: {{ .targetPort }}
|
|
||||||
{{- end }}
|
|
||||||
env:
|
env:
|
||||||
- name: MYSQL_HOST
|
- name: MYSQL_HOST
|
||||||
value: "{{ include "opencoze.fullname" . }}-mysql"
|
value: "{{ include "opencoze.fullname" . }}-mysql"
|
||||||
@ -97,18 +95,13 @@ spec:
|
|||||||
value: {{ $val | quote }}
|
value: {{ $val | quote }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
|
||||||
volumeMounts:
|
|
||||||
- name: model-config
|
|
||||||
mountPath: /app/resources/conf/model
|
|
||||||
{{- if .Values.cozeServer.confHostPath }}
|
{{- if .Values.cozeServer.confHostPath }}
|
||||||
|
volumeMounts:
|
||||||
- name: opencoze-server-conf
|
- name: opencoze-server-conf
|
||||||
mountPath: /app/resources/conf
|
mountPath: /app/resources/conf
|
||||||
{{- end }}
|
{{- end }}
|
||||||
volumes:
|
|
||||||
- name: model-config
|
|
||||||
configMap:
|
|
||||||
name: {{ include "opencoze.fullname" . }}-model-config
|
|
||||||
{{- if .Values.cozeServer.confHostPath }}
|
{{- if .Values.cozeServer.confHostPath }}
|
||||||
|
volumes:
|
||||||
- name: opencoze-server-conf
|
- name: opencoze-server-conf
|
||||||
hostPath:
|
hostPath:
|
||||||
path: {{ .Values.cozeServer.confHostPath }}
|
path: {{ .Values.cozeServer.confHostPath }}
|
||||||
|
|||||||
@ -0,0 +1,6 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: {{ include "opencoze.fullname" . }}-es-init-config
|
||||||
|
data:
|
||||||
|
{{ (.Files.Glob "files/es/*.json").AsConfig | indent 2 }}
|
||||||
47
helm/charts/opencoze/templates/elasticsearch-init-job.yaml
Normal file
47
helm/charts/opencoze/templates/elasticsearch-init-job.yaml
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
apiVersion: batch/v1
|
||||||
|
kind: Job
|
||||||
|
metadata:
|
||||||
|
name: {{ include "opencoze.fullname" . }}-es-init
|
||||||
|
|
||||||
|
spec:
|
||||||
|
template:
|
||||||
|
spec:
|
||||||
|
restartPolicy: Never
|
||||||
|
initContainers:
|
||||||
|
- name: wait-for-es
|
||||||
|
image: {{ .Values.images.busybox }}
|
||||||
|
command: ['sh', '-c', 'until nc -z {{ include "opencoze.fullname" . }}-elasticsearch 9200; do echo waiting for elasticsearch; sleep 2; done']
|
||||||
|
containers:
|
||||||
|
- name: es-init
|
||||||
|
image: {{ .Values.images.curl }}
|
||||||
|
env:
|
||||||
|
- name: ES_USERNAME
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: {{ .Release.Name }}-es-secret
|
||||||
|
key: username
|
||||||
|
- name: ES_PASSWORD
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: {{ .Release.Name }}-es-secret
|
||||||
|
key: password
|
||||||
|
command:
|
||||||
|
- /bin/sh
|
||||||
|
- -c
|
||||||
|
- |
|
||||||
|
set -ex
|
||||||
|
/scripts/setup_es.sh
|
||||||
|
volumeMounts:
|
||||||
|
- name: es-init-script
|
||||||
|
mountPath: /scripts
|
||||||
|
- name: es-index-schema
|
||||||
|
mountPath: /es_index_schema
|
||||||
|
volumes:
|
||||||
|
- name: es-init-script
|
||||||
|
configMap:
|
||||||
|
name: {{ include "opencoze.fullname" . }}-es-init-script
|
||||||
|
defaultMode: 0755
|
||||||
|
- name: es-index-schema
|
||||||
|
configMap:
|
||||||
|
name: {{ include "opencoze.fullname" . }}-es-init-config
|
||||||
|
backoffLimit: 4
|
||||||
@ -0,0 +1,44 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: {{ include "opencoze.fullname" . }}-es-init-script
|
||||||
|
data:
|
||||||
|
setup_es.sh: |
|
||||||
|
#!/bin/sh
|
||||||
|
set -ex
|
||||||
|
|
||||||
|
ES_HOST="http://{{ include "opencoze.fullname" . }}-elasticsearch:9200"
|
||||||
|
|
||||||
|
CURL_AUTH=""
|
||||||
|
if [ -n "$ES_USERNAME" ] && [ -n "$ES_PASSWORD" ]; then
|
||||||
|
CURL_AUTH="-u $ES_USERNAME:$ES_PASSWORD"
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# Upload index templates
|
||||||
|
for file in /es_index_schema/*.json; do
|
||||||
|
if [ -f "$file" ]; then
|
||||||
|
template_name=$(basename "$file" .index-template.json)
|
||||||
|
echo "Uploading index template $template_name"
|
||||||
|
curl -X PUT $CURL_AUTH "$ES_HOST/_index_template/$template_name" -H "Content-Type: application/json" --data-binary "@$file"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# Create indices
|
||||||
|
for file in /es_index_schema/*.json; do
|
||||||
|
if [ -f "$file" ]; then
|
||||||
|
template_name=$(basename "$file" .index-template.json)
|
||||||
|
index_name=$template_name
|
||||||
|
echo "Creating index $index_name"
|
||||||
|
curl -X PUT $CURL_AUTH "$ES_HOST/$index_name" -H "Content-Type: application/json" -d'{
|
||||||
|
"settings": {
|
||||||
|
"index": {
|
||||||
|
"number_of_shards": 1,
|
||||||
|
"number_of_replicas": 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}'
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "Elasticsearch setup complete."
|
||||||
@ -1,8 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: ConfigMap
|
|
||||||
metadata:
|
|
||||||
name: {{ include "opencoze.fullname" . }}-model-config
|
|
||||||
labels:
|
|
||||||
{{- include "opencoze.labels" . | nindent 4 }}
|
|
||||||
data:
|
|
||||||
{{- (.Files.Glob "files/conf/*").AsConfig | nindent 2 }}
|
|
||||||
@ -1,7 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: Secret
|
|
||||||
metadata:
|
|
||||||
name: {{ include "opencoze.fullname" . }}-mysql
|
|
||||||
stringData:
|
|
||||||
mysql-password: {{ .Values.mysql.password | quote }}
|
|
||||||
mysql-root-password: {{ .Values.mysql.rootPassword | quote }}
|
|
||||||
@ -1,3 +1,11 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Secret
|
||||||
|
metadata:
|
||||||
|
name: {{ include "opencoze.fullname" . }}-mysql
|
||||||
|
stringData:
|
||||||
|
mysql-password: {{ .Values.mysql.password | quote }}
|
||||||
|
mysql-root-password: {{ .Values.mysql.rootPassword | quote }}
|
||||||
|
---
|
||||||
apiVersion: apps/v1
|
apiVersion: apps/v1
|
||||||
kind: StatefulSet
|
kind: StatefulSet
|
||||||
metadata:
|
metadata:
|
||||||
|
|||||||
@ -7,12 +7,10 @@ metadata:
|
|||||||
spec:
|
spec:
|
||||||
type: {{ .Values.cozeServer.service.type }}
|
type: {{ .Values.cozeServer.service.type }}
|
||||||
ports:
|
ports:
|
||||||
{{- range .Values.cozeServer.service.ports }}
|
- port: {{ .Values.cozeServer.service.port }}
|
||||||
- name: {{ .name }}
|
targetPort: http
|
||||||
port: {{ .port }}
|
|
||||||
targetPort: {{ .name }}
|
|
||||||
protocol: TCP
|
protocol: TCP
|
||||||
{{- end }}
|
name: app-port
|
||||||
selector:
|
selector:
|
||||||
app.kubernetes.io/name: {{ include "opencoze.name" . }}
|
app.kubernetes.io/name: {{ include "opencoze.name" . }}
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||||
|
|||||||
@ -7,7 +7,7 @@ mysql:
|
|||||||
port: 3306
|
port: 3306
|
||||||
targetPort: 3306
|
targetPort: 3306
|
||||||
image:
|
image:
|
||||||
repository: mysql
|
repository: opencoze-cn-beijing.cr.volces.com/iac/mysql
|
||||||
tag: 8.4.5
|
tag: 8.4.5
|
||||||
rootPassword: "root"
|
rootPassword: "root"
|
||||||
database: opencoze
|
database: opencoze
|
||||||
@ -23,7 +23,7 @@ mysql:
|
|||||||
redis:
|
redis:
|
||||||
enabled: true
|
enabled: true
|
||||||
image:
|
image:
|
||||||
repository: bitnami/redis
|
repository: opencoze-cn-beijing.cr.volces.com/iac/redis
|
||||||
tag: "7.2"
|
tag: "7.2"
|
||||||
aofEnabled: "no"
|
aofEnabled: "no"
|
||||||
port: 6379
|
port: 6379
|
||||||
@ -47,32 +47,17 @@ cozeServer:
|
|||||||
|
|
||||||
service:
|
service:
|
||||||
type: LoadBalancer
|
type: LoadBalancer
|
||||||
ports:
|
port: 8888
|
||||||
- name: http
|
|
||||||
port: 8888
|
|
||||||
targetPort: 8888
|
|
||||||
- name: minio-proxy
|
|
||||||
port: 8889
|
|
||||||
targetPort: 8889
|
|
||||||
|
|
||||||
env:
|
env:
|
||||||
LISTEN_ADDR: ":8888"
|
|
||||||
SERVER_HOST: "localhost${LISTEN_ADDR}"
|
|
||||||
LOG_LEVEL: "debug"
|
LOG_LEVEL: "debug"
|
||||||
MAX_REQUEST_BODY_SIZE: "1073741824"
|
MAX_REQUEST_BODY_SIZE: "1073741824"
|
||||||
STORAGE_TYPE: "minio"
|
STORAGE_TYPE: "minio"
|
||||||
STORAGE_BUCKET: "opencoze"
|
MINIO_POD_PROXY_URL: "opencoze-minio:9000"
|
||||||
MINIO_PROXY_ENDPOINT: ":8889"
|
|
||||||
COZE_MQ_TYPE: rmq
|
|
||||||
MQ_NAME_SERVER: "127.0.0.1:9876"
|
|
||||||
MINIO_ENDPOINT: "127.0.0.1:9000"
|
MINIO_ENDPOINT: "127.0.0.1:9000"
|
||||||
ES_VERSION: "v8"
|
ES_VERSION: "v8"
|
||||||
VECTOR_STORE_TYPE: "milvus"
|
VECTOR_STORE_TYPE: "milvus"
|
||||||
EMBEDDING_TYPE: "ark"
|
EMBEDDING_TYPE: "openai"
|
||||||
ARK_EMBEDDING_MODEL: ""
|
|
||||||
ARK_EMBEDDING_DIMS: "1024"
|
|
||||||
ARK_EMBEDDING_BASE_URL: "https://ark.cn-beijing.volces.com/api/v3"
|
|
||||||
FILE_UPLOAD_COMPONENT_TYPE: "storage"
|
|
||||||
OPENAI_EMBEDDING_BASE_URL: "https://api.openai.com/v1/embeddings"
|
OPENAI_EMBEDDING_BASE_URL: "https://api.openai.com/v1/embeddings"
|
||||||
OPENAI_EMBEDDING_MODEL: "text-embedding-3-large"
|
OPENAI_EMBEDDING_MODEL: "text-embedding-3-large"
|
||||||
OPENAI_EMBEDDING_API_KEY: "your_api_key"
|
OPENAI_EMBEDDING_API_KEY: "your_api_key"
|
||||||
@ -81,10 +66,7 @@ cozeServer:
|
|||||||
OCR_TYPE: "ve"
|
OCR_TYPE: "ve"
|
||||||
VE_OCR_AK: ""
|
VE_OCR_AK: ""
|
||||||
VE_OCR_SK: ""
|
VE_OCR_SK: ""
|
||||||
BUILTIN_CM_TYPE: "ark"
|
BUILTIN_CM_TYPE: "openai"
|
||||||
BUILTIN_CM_ARK_API_KEY: ""
|
|
||||||
BUILTIN_CM_ARK_MODEL: ""
|
|
||||||
BUILTIN_CM_ARK_BASE_URL: ""
|
|
||||||
BUILTIN_CM_OPENAI_BASE_URL: "https://api.openai.com/v1/chat/completions"
|
BUILTIN_CM_OPENAI_BASE_URL: "https://api.openai.com/v1/chat/completions"
|
||||||
BUILTIN_CM_OPENAI_API_KEY: "your_api_key"
|
BUILTIN_CM_OPENAI_API_KEY: "your_api_key"
|
||||||
BUILTIN_CM_OPENAI_BY_AZURE: "false"
|
BUILTIN_CM_OPENAI_BY_AZURE: "false"
|
||||||
@ -95,14 +77,13 @@ cozeServer:
|
|||||||
VE_IMAGEX_DOMAIN: ""
|
VE_IMAGEX_DOMAIN: ""
|
||||||
VE_IMAGEX_TEMPLATE: ""
|
VE_IMAGEX_TEMPLATE: ""
|
||||||
VE_IMAGEX_UPLOAD_HOST: "https://imagex.volcengineapi.com"
|
VE_IMAGEX_UPLOAD_HOST: "https://imagex.volcengineapi.com"
|
||||||
COZE_SERVER_PROXY_URL_LIST: "opencoze-mysql:3306,opencoze-redis:6379,opencoze-elasticsearch:9200,opencoze-milvus:19530,opencoze-minio:9000,opencoze-rocketmq-namesrv:9876"
|
|
||||||
|
|
||||||
rocketmq:
|
rocketmq:
|
||||||
enabled: true
|
enabled: true
|
||||||
namesrv:
|
namesrv:
|
||||||
replicaCount: 1
|
replicaCount: 1
|
||||||
image:
|
image:
|
||||||
repository: apache/rocketmq
|
repository: opencoze-cn-beijing.cr.volces.com/iac/rocketmq
|
||||||
tag: 5.3.2
|
tag: 5.3.2
|
||||||
persistence:
|
persistence:
|
||||||
store:
|
store:
|
||||||
@ -134,7 +115,7 @@ rocketmq:
|
|||||||
broker:
|
broker:
|
||||||
replicaCount: 1
|
replicaCount: 1
|
||||||
image:
|
image:
|
||||||
repository: apache/rocketmq
|
repository: opencoze-cn-beijing.cr.volces.com/iac/rocketmq
|
||||||
tag: 5.3.2
|
tag: 5.3.2
|
||||||
config: |
|
config: |
|
||||||
brokerClusterName = DefaultCluster
|
brokerClusterName = DefaultCluster
|
||||||
@ -157,13 +138,13 @@ rocketmq:
|
|||||||
memory: 8Gi
|
memory: 8Gi
|
||||||
initContainers:
|
initContainers:
|
||||||
- name: wait-for-namesrv
|
- name: wait-for-namesrv
|
||||||
image: busybox:latest
|
image: opencoze-cn-beijing.cr.volces.com/iac/busybox:latest
|
||||||
command: ['sh', '-c', 'until nc -z rocketmq-namesrv 9876; do echo waiting for namesrv; sleep 2; done']
|
command: ['sh', '-c', 'until nc -z rocketmq-namesrv 9876; do echo waiting for namesrv; sleep 2; done']
|
||||||
|
|
||||||
elasticsearch:
|
elasticsearch:
|
||||||
enabled: true
|
enabled: true
|
||||||
image:
|
image:
|
||||||
repository: bitnami/elasticsearch
|
repository: opencoze-cn-beijing.cr.volces.com/iac/elasticsearch
|
||||||
tag: 8.18.0
|
tag: 8.18.0
|
||||||
javaOpts: "-Djdk.tls.client.protocols=TLSv1.2 -Dhttps.protocols=TLSv1.2 -Djavax.net.ssl.trustAll=true -Xms4096m -Xmx4096m"
|
javaOpts: "-Djdk.tls.client.protocols=TLSv1.2 -Dhttps.protocols=TLSv1.2 -Djavax.net.ssl.trustAll=true -Xms4096m -Xmx4096m"
|
||||||
username: ""
|
username: ""
|
||||||
@ -182,8 +163,8 @@ elasticsearch:
|
|||||||
minio:
|
minio:
|
||||||
enabled: true
|
enabled: true
|
||||||
image:
|
image:
|
||||||
repository: minio/minio
|
repository: opencoze-cn-beijing.cr.volces.com/iac/minio
|
||||||
tag: RELEASE.2025-06-13T11-33-47Z-cpuv1
|
tag: latest
|
||||||
accessKey: minioadmin
|
accessKey: minioadmin
|
||||||
secretKey: minioadmin123
|
secretKey: minioadmin123
|
||||||
bucket: opencoze
|
bucket: opencoze
|
||||||
@ -205,7 +186,7 @@ minio:
|
|||||||
etcd:
|
etcd:
|
||||||
enabled: true
|
enabled: true
|
||||||
image:
|
image:
|
||||||
repository: bitnami/etcd
|
repository: opencoze-cn-beijing.cr.volces.com/iac/etcd
|
||||||
tag: 3.5
|
tag: 3.5
|
||||||
persistence:
|
persistence:
|
||||||
storageClassName: "opencoze-data"
|
storageClassName: "opencoze-data"
|
||||||
@ -214,7 +195,7 @@ etcd:
|
|||||||
milvus:
|
milvus:
|
||||||
enabled: true
|
enabled: true
|
||||||
image:
|
image:
|
||||||
repository: milvusdb/milvus
|
repository: opencoze-cn-beijing.cr.volces.com/iac/milvus
|
||||||
tag: v2.5.10
|
tag: v2.5.10
|
||||||
bucketName: milvus
|
bucketName: milvus
|
||||||
persistence:
|
persistence:
|
||||||
@ -224,7 +205,7 @@ milvus:
|
|||||||
kibana:
|
kibana:
|
||||||
enabled: true
|
enabled: true
|
||||||
image:
|
image:
|
||||||
repository: bitnami/kibana
|
repository: opencoze-cn-beijing.cr.volces.com/iac/kibana
|
||||||
tag: 8.18.0
|
tag: 8.18.0
|
||||||
service:
|
service:
|
||||||
type: ClusterIP
|
type: ClusterIP
|
||||||
@ -232,8 +213,8 @@ kibana:
|
|||||||
|
|
||||||
|
|
||||||
images:
|
images:
|
||||||
busybox: busybox:latest
|
busybox: opencoze-cn-beijing.cr.volces.com/iac/busybox:latest
|
||||||
curl: alpine/curl:8.12.1
|
curl: opencoze-cn-beijing.cr.volces.com/iac/curl:8.12.1
|
||||||
|
|
||||||
|
|
||||||
# -- We will add other services like mysql, redis etc. here later
|
# -- We will add other services like mysql, redis etc. here later
|
||||||
|
|||||||
@ -2,10 +2,12 @@
|
|||||||
"$schema": "https://developer.microsoft.com/json-schemas/rush/v5/rush.schema.json",
|
"$schema": "https://developer.microsoft.com/json-schemas/rush/v5/rush.schema.json",
|
||||||
"rushVersion": "5.147.1",
|
"rushVersion": "5.147.1",
|
||||||
"pnpmVersion": "8.15.8",
|
"pnpmVersion": "8.15.8",
|
||||||
"nodeSupportedVersionRange": ">=21",
|
"nodeSupportedVersionRange": ">=16.13.0",
|
||||||
"projectFolderMinDepth": 3,
|
"projectFolderMinDepth": 3,
|
||||||
"projectFolderMaxDepth": 6,
|
"projectFolderMaxDepth": 6,
|
||||||
"gitPolicy": {
|
"gitPolicy": {
|
||||||
|
"allowedEmailRegExps": [],
|
||||||
|
"sampleEmail": "<user>@bytedance.com",
|
||||||
"versionBumpCommitMessage": "chore: bump versions [skip ci]",
|
"versionBumpCommitMessage": "chore: bump versions [skip ci]",
|
||||||
"changeLogUpdateCommitMessage": "chore: update changelogs [skip ci]",
|
"changeLogUpdateCommitMessage": "chore: update changelogs [skip ci]",
|
||||||
"tagSeparator": "@"
|
"tagSeparator": "@"
|
||||||
|
|||||||
Reference in New Issue
Block a user