@fudanda/workflow 0.0.0-stage → 2.20261024.1-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +114 -3
- package/THIRD-PARTY-NOTICES.md +57 -0
- package/dist/ai-markdown-esl-I5ck.js +7 -0
- package/dist/chrome.d.ts +11 -0
- package/dist/chrome.js +358 -0
- package/dist/core.d.ts +11 -0
- package/dist/core.js +3 -0
- package/dist/coze/compat/base.d.ts +116 -0
- package/dist/coze/control-icon.d.ts +15 -0
- package/dist/coze/execution-panel.d.ts +8 -0
- package/dist/coze/schema-tree.d.ts +9 -0
- package/dist/coze/side-panel.d.ts +12 -0
- package/dist/coze/source/form-extensions/components/output-tree/components/custom-tree-node/constants.d.ts +13 -0
- package/dist/coze/source/form-extensions/components/output-tree/components/custom-tree-node/type.d.ts +34 -0
- package/dist/coze/start-form.d.ts +9 -0
- package/dist/coze/test-input.d.ts +9 -0
- package/dist/coze/test-run-button.d.ts +4 -0
- package/dist/coze/workflow-header.d.ts +5 -0
- package/dist/designer.d.ts +2 -0
- package/dist/flowgram-designer.d.ts +63 -0
- package/dist/graph-scope.d.ts +78 -0
- package/dist/header-shortcuts-BQZuNfpA.js +6 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.js +8694 -0
- package/dist/input-fields.d.ts +4 -0
- package/dist/observation-types.d.ts +6 -0
- package/dist/panel-focus.d.ts +3 -0
- package/dist/prompt-kit.d.ts +47 -0
- package/dist/result-preview.d.ts +5 -0
- package/dist/schema-tree-CTM6hEdm.js +309 -0
- package/dist/start-form-L6xw9phk.js +9330 -0
- package/dist/styles.css +2 -0
- package/dist/templates.d.ts +1 -0
- package/dist/test-input-validation-CkORPCfm.js +55 -0
- package/dist/test-input-validation.d.ts +11 -0
- package/dist/theme.d.ts +17 -0
- package/package.json +103 -4
- package/vendor/coze/LICENSE-APACHE +177 -0
- package/vendor/coze/UPSTREAM.json +2247 -0
- package/vendor/coze/original/base-test-button.tsx +22 -0
- package/vendor/coze/original/comment-container.tsx +68 -0
- package/vendor/coze/original/condition-container.tsx +60 -0
- package/vendor/coze/original/condition-tag.tsx +58 -0
- package/vendor/coze/original/coze-global.less +234 -0
- package/vendor/coze/original/create-loop-function-json.ts +134 -0
- package/vendor/coze/original/create-loop-function.ts +56 -0
- package/vendor/coze/original/end-registry.ts +41 -0
- package/vendor/coze/original/execute-result-panel.less +97 -0
- package/vendor/coze/original/execute-result-panel.tsx +171 -0
- package/vendor/coze/original/form-item.less +39 -0
- package/vendor/coze/original/form-item.tsx +200 -0
- package/vendor/coze/original/http-api-field.tsx +42 -0
- package/vendor/coze/original/http-form-render.tsx +102 -0
- package/vendor/coze/original/icon-add.svg +3 -0
- package/vendor/coze/original/icon-arrow-left.svg +3 -0
- package/vendor/coze/original/icon-auto-layout.svg +18 -0
- package/vendor/coze/original/icon-batch.jpg +0 -0
- package/vendor/coze/original/icon-break.jpg +0 -0
- package/vendor/coze/original/icon-code.svg +13 -0
- package/vendor/coze/original/icon-condition.jpg +0 -0
- package/vendor/coze/original/icon-condition.svg +12 -0
- package/vendor/coze/original/icon-continue.jpg +0 -0
- package/vendor/coze/original/icon-database-query.jpg +0 -0
- package/vendor/coze/original/icon-database-update.jpg +0 -0
- package/vendor/coze/original/icon-database.svg +18 -0
- package/vendor/coze/original/icon-delete.svg +5 -0
- package/vendor/coze/original/icon-end.jpg +0 -0
- package/vendor/coze/original/icon-fullscreen.svg +9 -0
- package/vendor/coze/original/icon-http.jpg +0 -0
- package/vendor/coze/original/icon-intent.jpg +0 -0
- package/vendor/coze/original/icon-json-parser.jpg +0 -0
- package/vendor/coze/original/icon-json-stringify.jpg +0 -0
- package/vendor/coze/original/icon-llm.jpg +0 -0
- package/vendor/coze/original/icon-loop.jpg +0 -0
- package/vendor/coze/original/icon-more.svg +11 -0
- package/vendor/coze/original/icon-play-round-outlined.svg +8 -0
- package/vendor/coze/original/icon-plugin-tool.svg +6 -0
- package/vendor/coze/original/icon-standard-copy.svg +8 -0
- package/vendor/coze/original/icon-start.jpg +0 -0
- package/vendor/coze/original/icon-text.jpg +0 -0
- package/vendor/coze/original/icon-unknown.svg +7 -0
- package/vendor/coze/original/icon-var.svg +6 -0
- package/vendor/coze/original/icon-variable-assign.jpg +0 -0
- package/vendor/coze/original/icon-variable-merge.jpg +0 -0
- package/vendor/coze/original/icon-workflow-end.svg +5 -0
- package/vendor/coze/original/icon-workflow-start.svg +5 -0
- package/vendor/coze/original/icon-workflow.jpg +0 -0
- package/vendor/coze/original/icon-workflow.svg +21 -0
- package/vendor/coze/original/icon-workflows.svg +5 -0
- package/vendor/coze/original/if-form-meta.tsx +88 -0
- package/vendor/coze/original/logic-display.tsx +33 -0
- package/vendor/coze/original/mouse-icon.tsx +35 -0
- package/vendor/coze/original/mouse-pad-selector.tsx +180 -0
- package/vendor/coze/original/node-card.tsx +77 -0
- package/vendor/coze/original/node-category-panel.less +4 -0
- package/vendor/coze/original/node-category-panel.tsx +53 -0
- package/vendor/coze/original/node-config-form.tsx +67 -0
- package/vendor/coze/original/node-header.less +165 -0
- package/vendor/coze/original/node-header.tsx +552 -0
- package/vendor/coze/original/node-panel.less +183 -0
- package/vendor/coze/original/node-render.less +20 -0
- package/vendor/coze/original/node-side-sheet.less +57 -0
- package/vendor/coze/original/node-side-sheet.tsx +214 -0
- package/vendor/coze/original/node-wrapper.tsx +71 -0
- package/vendor/coze/original/pad-icon.tsx +45 -0
- package/vendor/coze/original/resizable-side-panel-constants.ts +18 -0
- package/vendor/coze/original/resizable-side-panel.tsx +42 -0
- package/vendor/coze/original/start-registry.ts +53 -0
- package/vendor/coze/original/sub-canvas-background.less +4 -0
- package/vendor/coze/original/sub-canvas-background.tsx +48 -0
- package/vendor/coze/original/sub-canvas-container.less +16 -0
- package/vendor/coze/original/sub-canvas-container.tsx +97 -0
- package/vendor/coze/original/sub-canvas-header.less +75 -0
- package/vendor/coze/original/sub-canvas-header.tsx +95 -0
- package/vendor/coze/original/test-form-sheet-header.tsx +82 -0
- package/vendor/coze/original/test-form-sheet.less +178 -0
- package/vendor/coze/original/toolbar-add-node.tsx +68 -0
- package/vendor/coze/original/toolbar-auto-layout.tsx +61 -0
- package/vendor/coze/original/toolbar-comment.tsx +121 -0
- package/vendor/coze/original/toolbar-container.tsx +42 -0
- package/vendor/coze/original/toolbar-interactive.tsx +98 -0
- package/vendor/coze/original/toolbar-minimap-switch.tsx +41 -0
- package/vendor/coze/original/toolbar-tools.less +46 -0
- package/vendor/coze/original/toolbar-tools.tsx +89 -0
- package/vendor/coze/original/toolbar-zoom.tsx +134 -0
- package/vendor/coze/original/tree-variable-selector.less +292 -0
- package/vendor/coze/original/tree-variable-selector.tsx +298 -0
- package/vendor/coze/original/workflow-document-custom-options.ts +151 -0
- package/vendor/coze/original/workflow-header.less +65 -0
- package/vendor/coze/original/workflow-header.tsx +85 -0
- package/vendor/coze/source/agent-models/model-option/index.module.less +19 -0
- package/vendor/coze/source/agent-models/model-option/index.tsx +321 -0
- package/vendor/coze/source/agent-models/model-option-avatar/index.tsx +175 -0
- package/vendor/coze/source/agent-models/model-option-group/index.tsx +87 -0
- package/vendor/coze/source/agent-models/model-option-thumb/index.tsx +41 -0
- package/vendor/coze/source/agent-models/model-select-ui/index.tsx +238 -0
- package/vendor/coze/source/agent-models/popover-model-list-view/index.tsx +146 -0
- package/vendor/coze/source/components/code-editor/text-editor.tsx +71 -0
- package/vendor/coze/source/components/comment/components/editor/block.tsx +117 -0
- package/vendor/coze/source/components/comment/components/editor/leaf.tsx +64 -0
- package/vendor/coze/source/components/comment/components/toolbar.tsx +366 -0
- package/vendor/coze/source/components/comment/constant.ts +94 -0
- package/vendor/coze/source/components/editor-container/expand-editor/index.module.less +107 -0
- package/vendor/coze/source/components/editor-container/expand-editor/index.tsx +117 -0
- package/vendor/coze/source/components/model-select/components/model-setting.tsx +300 -0
- package/vendor/coze/source/components/model-select/components/settings.tsx +144 -0
- package/vendor/coze/source/components/model-select/index.module.less +34 -0
- package/vendor/coze/source/components/model-select/utils/index.tsx +100 -0
- package/vendor/coze/source/components/node-render/node-render-new/fields/constants.tsx +79 -0
- package/vendor/coze/source/components/node-render/node-render-new/fields/field-empty.module.less +12 -0
- package/vendor/coze/source/components/node-render/node-render-new/fields/field-empty.tsx +37 -0
- package/vendor/coze/source/components/node-render/node-render-new/fields/field.module.less +19 -0
- package/vendor/coze/source/components/node-render/node-render-new/fields/field.tsx +52 -0
- package/vendor/coze/source/components/node-render/node-render-new/fields/http-api-field/index.tsx +42 -0
- package/vendor/coze/source/components/node-render/node-render-new/fields/overflow-tag-list.module.less +47 -0
- package/vendor/coze/source/components/node-render/node-render-new/fields/overflow-tag-list.tsx +162 -0
- package/vendor/coze/source/components/node-render/node-render-new/fields/variable-tag-list.module.less +48 -0
- package/vendor/coze/source/components/node-render/node-render-new/fields/variable-tag-list.tsx +126 -0
- package/vendor/coze/source/components/node-wrapper/execute-result-panel/index.module.less +97 -0
- package/vendor/coze/source/components/node-wrapper/execute-result-panel/index.tsx +171 -0
- package/vendor/coze/source/components/sub-canvas/components/background/index.module.less +4 -0
- package/vendor/coze/source/components/sub-canvas/components/header/index.module.less +75 -0
- package/vendor/coze/source/components/test-run/test-run-button/single-node.tsx +158 -0
- package/vendor/coze/source/execution-panel/panel.module.less +48 -0
- package/vendor/coze/source/execution-panel/panel.tsx +99 -0
- package/vendor/coze/source/execution-panel/use-resize.ts +79 -0
- package/vendor/coze/source/external/features/log/components/data-viewer/constants.ts +28 -0
- package/vendor/coze/source/external/features/log/components/data-viewer/context/context.ts +21 -0
- package/vendor/coze/source/external/features/log/components/data-viewer/context/create-store.ts +48 -0
- package/vendor/coze/source/external/features/log/components/data-viewer/context/index.ts +19 -0
- package/vendor/coze/source/external/features/log/components/data-viewer/context/provider.tsx +50 -0
- package/vendor/coze/source/external/features/log/components/data-viewer/data-viewer.module.less +26 -0
- package/vendor/coze/source/external/features/log/components/data-viewer/data-viewer.tsx +79 -0
- package/vendor/coze/source/external/features/log/components/data-viewer/hooks/index.ts +18 -0
- package/vendor/coze/source/external/features/log/components/data-viewer/hooks/use-data-viewer-store.ts +29 -0
- package/vendor/coze/source/external/features/log/components/data-viewer/hooks/use-expand.ts +35 -0
- package/vendor/coze/source/external/features/log/components/data-viewer/hooks/use-value.tsx +66 -0
- package/vendor/coze/source/external/features/log/components/data-viewer/index.tsx +21 -0
- package/vendor/coze/source/external/features/log/components/data-viewer/json-field/index.tsx +186 -0
- package/vendor/coze/source/external/features/log/components/data-viewer/json-field/json-field.module.less +79 -0
- package/vendor/coze/source/external/features/log/components/data-viewer/types.ts +50 -0
- package/vendor/coze/source/external/features/log/components/data-viewer/utils/big-number.ts +35 -0
- package/vendor/coze/source/external/features/log/components/data-viewer/utils/generate-field.ts +104 -0
- package/vendor/coze/source/external/features/log/components/log-parser/log-wrap.module.less +27 -0
- package/vendor/coze/source/external/features/log/components/log-parser/log-wrap.tsx +109 -0
- package/vendor/coze/source/external/features/log/components/node-status-bar/node-status-bar.module.less +52 -0
- package/vendor/coze/source/external/features/log/components/node-status-bar/node-status-bar.tsx +113 -0
- package/vendor/coze/source/form/components/field-empty.tsx +45 -0
- package/vendor/coze/source/form/components/section.tsx +91 -0
- package/vendor/coze/source/form-extensions/components/add-item-button/index.tsx +64 -0
- package/vendor/coze/source/form-extensions/components/form-card/index.module.less +131 -0
- package/vendor/coze/source/form-extensions/components/form-card/index.tsx +309 -0
- package/vendor/coze/source/form-extensions/components/form-item/index.module.less +39 -0
- package/vendor/coze/source/form-extensions/components/form-item/index.tsx +200 -0
- package/vendor/coze/source/form-extensions/components/form-item-feedback/index.module.less +7 -0
- package/vendor/coze/source/form-extensions/components/form-item-feedback/index.tsx +39 -0
- package/vendor/coze/source/form-extensions/components/level-line/index.module.less +346 -0
- package/vendor/coze/source/form-extensions/components/level-line/index.ts +17 -0
- package/vendor/coze/source/form-extensions/components/level-line/level-line.tsx +460 -0
- package/vendor/coze/source/form-extensions/components/level-line/types.ts +38 -0
- package/vendor/coze/source/form-extensions/components/level-line/utils.ts +60 -0
- package/vendor/coze/source/form-extensions/components/literal-value-input/constants.ts +61 -0
- package/vendor/coze/source/form-extensions/components/literal-value-input/input-boolean.tsx +80 -0
- package/vendor/coze/source/form-extensions/components/literal-value-input/input-integer.tsx +68 -0
- package/vendor/coze/source/form-extensions/components/literal-value-input/input-number.tsx +62 -0
- package/vendor/coze/source/form-extensions/components/literal-value-input/input-select.tsx +59 -0
- package/vendor/coze/source/form-extensions/components/literal-value-input/input-string.tsx +55 -0
- package/vendor/coze/source/form-extensions/components/literal-value-input/literal-value-input.tsx +35 -0
- package/vendor/coze/source/form-extensions/components/literal-value-input/styles.module.less +46 -0
- package/vendor/coze/source/form-extensions/components/literal-value-input/type.ts +61 -0
- package/vendor/coze/source/form-extensions/components/literal-value-input/utils.tsx +117 -0
- package/vendor/coze/source/form-extensions/components/node-header/components/close-button.tsx +44 -0
- package/vendor/coze/source/form-extensions/components/node-header/description-display.tsx +52 -0
- package/vendor/coze/source/form-extensions/components/node-header/description.tsx +131 -0
- package/vendor/coze/source/form-extensions/components/node-header/index.module.less +165 -0
- package/vendor/coze/source/form-extensions/components/node-header/index.tsx +552 -0
- package/vendor/coze/source/form-extensions/components/output-tree/components/custom-tree-node/components/expand-btn/index.tsx +43 -0
- package/vendor/coze/source/form-extensions/components/output-tree/components/custom-tree-node/components/expand-content/default-value-input.tsx +276 -0
- package/vendor/coze/source/form-extensions/components/output-tree/components/custom-tree-node/components/expand-content/index.module.less +124 -0
- package/vendor/coze/source/form-extensions/components/output-tree/components/custom-tree-node/components/expand-content/index.tsx +131 -0
- package/vendor/coze/source/form-extensions/components/output-tree/components/custom-tree-node/components/expand-content/types.ts +32 -0
- package/vendor/coze/source/form-extensions/components/output-tree/components/custom-tree-node/components/param-name/index.module.less +38 -0
- package/vendor/coze/source/form-extensions/components/output-tree/components/custom-tree-node/components/param-name/index.tsx +101 -0
- package/vendor/coze/source/form-extensions/components/output-tree/components/custom-tree-node/components/param-operator/index.module.less +51 -0
- package/vendor/coze/source/form-extensions/components/output-tree/components/custom-tree-node/components/param-operator/index.tsx +107 -0
- package/vendor/coze/source/form-extensions/components/output-tree/components/custom-tree-node/components/param-required/index.module.less +17 -0
- package/vendor/coze/source/form-extensions/components/output-tree/components/custom-tree-node/components/param-required/index.tsx +53 -0
- package/vendor/coze/source/form-extensions/components/output-tree/components/custom-tree-node/components/param-type/constants.tsx +77 -0
- package/vendor/coze/source/form-extensions/components/output-tree/components/custom-tree-node/components/param-type/index.module.less +97 -0
- package/vendor/coze/source/form-extensions/components/output-tree/components/custom-tree-node/components/param-type/index.tsx +155 -0
- package/vendor/coze/source/form-extensions/components/output-tree/components/custom-tree-node/constants.ts +38 -0
- package/vendor/coze/source/form-extensions/components/output-tree/components/custom-tree-node/index.module.less +138 -0
- package/vendor/coze/source/form-extensions/components/output-tree/components/custom-tree-node/index.tsx +360 -0
- package/vendor/coze/source/form-extensions/components/output-tree/components/custom-tree-node/type.ts +88 -0
- package/vendor/coze/source/form-extensions/components/output-tree/components/header/index.module.less +36 -0
- package/vendor/coze/source/form-extensions/components/output-tree/components/header/index.tsx +104 -0
- package/vendor/coze/source/form-extensions/components/output-tree/constants.ts +22 -0
- package/vendor/coze/source/form-extensions/components/output-tree/context.ts +28 -0
- package/vendor/coze/source/form-extensions/components/output-tree/hooks/use-columns-style.ts +39 -0
- package/vendor/coze/source/form-extensions/components/output-tree/index.module.less +83 -0
- package/vendor/coze/source/form-extensions/components/output-tree/index.tsx +692 -0
- package/vendor/coze/source/form-extensions/components/output-tree/utils.ts +185 -0
- package/vendor/coze/source/form-extensions/components/setting-on-error/components/process-type/index.tsx +97 -0
- package/vendor/coze/source/form-extensions/components/setting-on-error/components/process-type/option-item.tsx +30 -0
- package/vendor/coze/source/form-extensions/components/setting-on-error/components/process-type/types.ts +23 -0
- package/vendor/coze/source/form-extensions/components/setting-on-error/components/retry-times/index.tsx +45 -0
- package/vendor/coze/source/form-extensions/components/setting-on-error/components/timeout/index.tsx +102 -0
- package/vendor/coze/source/form-extensions/components/tree-variable-selector/composite-select-option.tsx +167 -0
- package/vendor/coze/source/form-extensions/components/tree-variable-selector/composite-select-tree-panel.tsx +165 -0
- package/vendor/coze/source/form-extensions/components/tree-variable-selector/composite-select.module.less +96 -0
- package/vendor/coze/source/form-extensions/components/tree-variable-selector/composite-select.tsx +265 -0
- package/vendor/coze/source/form-extensions/components/tree-variable-selector/context.tsx +42 -0
- package/vendor/coze/source/form-extensions/components/tree-variable-selector/expand-icon.tsx +30 -0
- package/vendor/coze/source/form-extensions/components/tree-variable-selector/index.module.less +292 -0
- package/vendor/coze/source/form-extensions/components/tree-variable-selector/node-variable-tree.module.less +49 -0
- package/vendor/coze/source/form-extensions/components/tree-variable-selector/node-variable-tree.tsx +149 -0
- package/vendor/coze/source/form-extensions/components/tree-variable-selector/utils.tsx +500 -0
- package/vendor/coze/source/form-extensions/components/tree-variable-selector/value-display.tsx +130 -0
- package/vendor/coze/source/form-extensions/components/value-expression-input/const.ts +68 -0
- package/vendor/coze/source/form-extensions/components/value-expression-input/context.ts +27 -0
- package/vendor/coze/source/form-extensions/components/value-expression-input/index.module.less +144 -0
- package/vendor/coze/source/form-extensions/components/value-expression-input/value-expression-input.tsx +418 -0
- package/vendor/coze/source/form-extensions/components/variable-type-selector/constants.tsx +77 -0
- package/vendor/coze/source/form-extensions/components/variable-type-selector/index.module.less +31 -0
- package/vendor/coze/source/form-extensions/components/variable-type-selector/index.tsx +17 -0
- package/vendor/coze/source/form-extensions/components/variable-type-selector/utils.tsx +298 -0
- package/vendor/coze/source/form-extensions/components/variable-type-selector/variable-type-selector.tsx +235 -0
- package/vendor/coze/source/form-extensions/components/variable-type-tag/index.tsx +54 -0
- package/vendor/coze/source/form-extensions/setters/condition/multi-condition/condition-branch.module.less +9 -0
- package/vendor/coze/source/form-extensions/setters/condition/multi-condition/condition-branch.tsx +249 -0
- package/vendor/coze/source/form-extensions/setters/condition/multi-condition/condition-header.tsx +50 -0
- package/vendor/coze/source/form-extensions/setters/condition/multi-condition/condition-item-logic.module.less +13 -0
- package/vendor/coze/source/form-extensions/setters/condition/multi-condition/condition-item-logic.tsx +73 -0
- package/vendor/coze/source/form-extensions/setters/condition/multi-condition/condition-params-item/delete/index.module.less +10 -0
- package/vendor/coze/source/form-extensions/setters/condition/multi-condition/condition-params-item/delete/index.tsx +42 -0
- package/vendor/coze/source/form-extensions/setters/condition/multi-condition/condition-params-item/index.module.less +9 -0
- package/vendor/coze/source/form-extensions/setters/condition/multi-condition/condition-params-item/index.tsx +254 -0
- package/vendor/coze/source/form-extensions/setters/condition/multi-condition/condition-params-item/operator/index.module.less +7 -0
- package/vendor/coze/source/form-extensions/setters/condition/multi-condition/condition-params-item/operator/index.tsx +144 -0
- package/vendor/coze/source/form-extensions/setters/condition/multi-condition/condition-params-item/value-expression-with-state/index.tsx +69 -0
- package/vendor/coze/source/form-extensions/setters/condition/multi-condition/context.ts +36 -0
- package/vendor/coze/source/form-extensions/setters/condition/multi-condition/draggable/condition-branch-preview.tsx +44 -0
- package/vendor/coze/source/form-extensions/setters/condition/multi-condition/draggable/condition-branch.tsx +152 -0
- package/vendor/coze/source/form-extensions/setters/condition/multi-condition/draggable/container.tsx +19 -0
- package/vendor/coze/source/form-extensions/setters/condition/multi-condition/draggable/custom-drag-layer.tsx +117 -0
- package/vendor/coze/source/form-extensions/setters/condition/multi-condition/draggable/types.ts +18 -0
- package/vendor/coze/source/form-extensions/setters/condition/multi-condition/types.ts +58 -0
- package/vendor/coze/source/node-registries/end/components/terminate-plan-field.tsx +29 -0
- package/vendor/coze/source/node-registries/end/constants.ts +34 -0
- package/vendor/coze/source/node-registries/end/form.tsx +66 -0
- package/vendor/coze/source/node-registries/end/types.ts +45 -0
- package/vendor/coze/source/node-registries/http/components/base-editor/raw-text-editor.tsx +80 -0
- package/vendor/coze/source/node-registries/http/constants.ts +80 -0
- package/vendor/coze/source/node-registries/http/fields/json-import-editor/index.module.less +191 -0
- package/vendor/coze/source/node-registries/http/fields/json-import-editor/json-import-components/json-expand-editor.tsx +141 -0
- package/vendor/coze/source/node-registries/http/fields/json-import-editor/json-import-components/json-import.tsx +99 -0
- package/vendor/coze/source/node-registries/http/form-render.tsx +102 -0
- package/vendor/coze/source/node-registries/http/setters/api/curl-expand-editor.tsx +161 -0
- package/vendor/coze/source/node-registries/http/setters/api/curl-import.tsx +96 -0
- package/vendor/coze/source/node-registries/http/setters/api/index.module.less +199 -0
- package/vendor/coze/source/node-registries/http/setters/api/index.tsx +149 -0
- package/vendor/coze/source/node-registries/http/setters/api/utils.ts +41 -0
- package/vendor/coze/source/node-registries/http/setters/body/index.tsx +201 -0
- package/vendor/coze/source/node-registries/http/setters/constants.ts +83 -0
- package/vendor/coze/source/node-registries/if/components/else/index.tsx +41 -0
- package/vendor/coze/source/node-registries/intent/components/intents/index.module.less +15 -0
- package/vendor/coze/source/node-registries/intent/components/intents/option-item/index.tsx +189 -0
- package/vendor/coze/source/node-registries/json-stringify/constants.ts +32 -0
- package/vendor/coze/source/node-registries/json-stringify/form.tsx +46 -0
- package/vendor/coze/source/node-registries/loop/constants.ts +43 -0
- package/vendor/coze/source/node-registries/loop/loop-fields/loop-settings-section/index.tsx +48 -0
- package/vendor/coze/source/node-registries/loop/loop-fields/loop-type/index.tsx +81 -0
- package/vendor/coze/source/node-registries/loop/loop-fields/loop-type/options.ts +34 -0
- package/vendor/coze/source/node-registries/start/form.tsx +209 -0
- package/vendor/coze/source/node-registries/text-process/components/method-selector/index.tsx +46 -0
- package/vendor/coze/source/node-registries/text-process/constants.ts +132 -0
- package/vendor/coze/source/nodes-v2/components/form-item-feedback/index.module.less +7 -0
- package/vendor/coze/source/nodes-v2/components/form-item-feedback/index.tsx +47 -0
- package/vendor/coze/source/nodes-v2/components/system-prompt/index.module.less +66 -0
- package/vendor/coze/source/nodes-v2/components/system-prompt/prompt-kit-bar.tsx +129 -0
- package/vendor/coze/source/nodes-v2/components/system-prompt/system-prompt-editor.tsx +110 -0
- package/vendor/coze/source/nodes-v2/llm/user-prompt/index.tsx +64 -0
- package/vendor/coze/source/prompt-kit/input-config-popover/index.tsx +80 -0
- package/vendor/coze/source/prompt-kit/input-slot-widget/index.css +34 -0
- package/vendor/coze/source/prompt-kit/input-slot-widget/index.ts +169 -0
- package/vendor/coze/source/prompt-kit/library-item.tsx +141 -0
- package/vendor/coze/source/prompt-kit/prompt-info-input.tsx +90 -0
- package/vendor/coze/source/ui-components/add-operation/index.module.less +19 -0
- package/vendor/coze/source/ui-components/add-operation/index.tsx +67 -0
- package/vendor/coze/source/ui-components/auto-size-tooltip/index.module.less +39 -0
- package/vendor/coze/source/ui-components/auto-size-tooltip/index.tsx +74 -0
- package/vendor/coze/source/ui-components/workflow-sl-input/index.module.less +36 -0
- package/vendor/coze/source/ui-components/workflow-sl-input/index.tsx +194 -0
- package/vendor/coze/source/utils/create-slots/index.tsx +126 -0
- package/vendor/coze/source/utils/create-slots/use-force-update.ts +23 -0
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2025 coze-dev Authors
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
import { type ReactNode } from 'react';
|
|
18
|
+
|
|
19
|
+
import cls from 'classnames';
|
|
20
|
+
import { I18n } from '@coze-arch/i18n';
|
|
21
|
+
import {
|
|
22
|
+
IconCozRoleFill,
|
|
23
|
+
IconCozLightbulbFill,
|
|
24
|
+
IconCozChatFill,
|
|
25
|
+
IconCozCodeFill,
|
|
26
|
+
IconCozDocumentFill,
|
|
27
|
+
IconCozImageFill,
|
|
28
|
+
IconCozLightningFill,
|
|
29
|
+
IconCozMusic,
|
|
30
|
+
IconCozStarFill,
|
|
31
|
+
IconCozVideoFill,
|
|
32
|
+
IconCozWrenchFill,
|
|
33
|
+
} from '@coze-arch/coze-design/icons';
|
|
34
|
+
import { Avatar, Tooltip } from '@coze-arch/coze-design';
|
|
35
|
+
import { type Model, ModelTagValue } from '@coze-arch/bot-api/developer_api';
|
|
36
|
+
|
|
37
|
+
export function ModelOptionAvatar({ model }: { model: Model }) {
|
|
38
|
+
return (
|
|
39
|
+
<Tooltip
|
|
40
|
+
trigger={
|
|
41
|
+
model.model_status_details?.is_upcoming_deprecated ? 'hover' : 'custom'
|
|
42
|
+
}
|
|
43
|
+
content={I18n.t('model_list_model_deprecation_date', {
|
|
44
|
+
date: model.model_status_details?.deprecated_date,
|
|
45
|
+
})}
|
|
46
|
+
>
|
|
47
|
+
<span>
|
|
48
|
+
<InnerImg
|
|
49
|
+
model={model}
|
|
50
|
+
bottomBanner={
|
|
51
|
+
model.model_status_details?.is_upcoming_deprecated ? (
|
|
52
|
+
<div
|
|
53
|
+
className={cls(
|
|
54
|
+
'absolute bottom-0 left-0',
|
|
55
|
+
'w-full py-[1px] px-[3px] rounded-b-[6px]',
|
|
56
|
+
'flex items-center justify-center text-center',
|
|
57
|
+
'text-[10px] font-medium leading-[14px] break-all',
|
|
58
|
+
'coz-mg-mask coz-fg-hglt-plus',
|
|
59
|
+
)}
|
|
60
|
+
>
|
|
61
|
+
{I18n.t('model_list_willDeprecated')}
|
|
62
|
+
</div>
|
|
63
|
+
) : undefined
|
|
64
|
+
}
|
|
65
|
+
/>
|
|
66
|
+
</span>
|
|
67
|
+
</Tooltip>
|
|
68
|
+
);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
function InnerImg({
|
|
72
|
+
model: { model_status_details, model_icon },
|
|
73
|
+
bottomBanner,
|
|
74
|
+
}: {
|
|
75
|
+
model: Model;
|
|
76
|
+
bottomBanner?: ReactNode;
|
|
77
|
+
}) {
|
|
78
|
+
if (
|
|
79
|
+
model_status_details?.is_new_model ||
|
|
80
|
+
!model_status_details?.model_feature
|
|
81
|
+
) {
|
|
82
|
+
return (
|
|
83
|
+
<Avatar
|
|
84
|
+
className="shrink-0 rounded-[6px] border border-solid coz-stroke-primary"
|
|
85
|
+
shape="square"
|
|
86
|
+
// @ts-expect-error -- there is a problem with the semi type definition
|
|
87
|
+
bottomSlot={
|
|
88
|
+
bottomBanner
|
|
89
|
+
? {
|
|
90
|
+
render: () => bottomBanner,
|
|
91
|
+
}
|
|
92
|
+
: undefined
|
|
93
|
+
}
|
|
94
|
+
src={model_icon}
|
|
95
|
+
/>
|
|
96
|
+
);
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
const featureIcon = FEATURE_ICON_MAP[model_status_details.model_feature];
|
|
100
|
+
|
|
101
|
+
return (
|
|
102
|
+
<div
|
|
103
|
+
className={cls(
|
|
104
|
+
'w-[48px] h-[48px] p-[13px] relative',
|
|
105
|
+
'shrink-0 rounded-[6px] text-[22px]',
|
|
106
|
+
featureIcon.color,
|
|
107
|
+
featureIcon.bg,
|
|
108
|
+
)}
|
|
109
|
+
>
|
|
110
|
+
{featureIcon.icon}
|
|
111
|
+
{bottomBanner}
|
|
112
|
+
</div>
|
|
113
|
+
);
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
const FEATURE_ICON_MAP: Record<
|
|
117
|
+
ModelTagValue,
|
|
118
|
+
{ color: string; bg: string; icon: ReactNode }
|
|
119
|
+
> = {
|
|
120
|
+
[ModelTagValue.Flagship]: {
|
|
121
|
+
icon: <IconCozStarFill />, //flagship
|
|
122
|
+
color: 'coz-fg-color-brand',
|
|
123
|
+
bg: 'coz-mg-hglt',
|
|
124
|
+
},
|
|
125
|
+
[ModelTagValue.HighSpeed]: {
|
|
126
|
+
icon: <IconCozLightningFill />, //high speed
|
|
127
|
+
color: 'coz-fg-color-blue',
|
|
128
|
+
bg: 'coz-mg-color-blue',
|
|
129
|
+
},
|
|
130
|
+
[ModelTagValue.CostPerformance]: {
|
|
131
|
+
icon: <IconCozChatFill />, //price/performance ratio
|
|
132
|
+
color: 'coz-fg-color-blue',
|
|
133
|
+
bg: 'coz-mg-color-blue',
|
|
134
|
+
},
|
|
135
|
+
[ModelTagValue.LongText]: {
|
|
136
|
+
icon: <IconCozDocumentFill />, //long text
|
|
137
|
+
color: 'coz-fg-color-blue',
|
|
138
|
+
bg: 'coz-mg-color-blue',
|
|
139
|
+
},
|
|
140
|
+
[ModelTagValue.RolePlaying]: {
|
|
141
|
+
icon: <IconCozRoleFill />, //Role Playing
|
|
142
|
+
color: 'coz-fg-color-blue',
|
|
143
|
+
bg: 'coz-mg-color-blue',
|
|
144
|
+
},
|
|
145
|
+
[ModelTagValue.ImageUnderstanding]: {
|
|
146
|
+
icon: <IconCozImageFill />, //image
|
|
147
|
+
color: 'coz-fg-color-purple',
|
|
148
|
+
bg: 'coz-mg-color-purple',
|
|
149
|
+
},
|
|
150
|
+
[ModelTagValue.VideoUnderstanding]: {
|
|
151
|
+
icon: <IconCozVideoFill />, //video
|
|
152
|
+
color: 'coz-fg-color-purple',
|
|
153
|
+
bg: 'coz-mg-color-purple',
|
|
154
|
+
},
|
|
155
|
+
[ModelTagValue.AudioUnderstanding]: {
|
|
156
|
+
icon: <IconCozMusic />, //Audio
|
|
157
|
+
color: 'coz-fg-color-purple',
|
|
158
|
+
bg: 'coz-mg-color-purple',
|
|
159
|
+
},
|
|
160
|
+
[ModelTagValue.CodeSpecialization]: {
|
|
161
|
+
icon: <IconCozCodeFill />, //Code Specialization
|
|
162
|
+
color: 'coz-fg-color-cyan',
|
|
163
|
+
bg: 'coz-mg-color-cyan',
|
|
164
|
+
},
|
|
165
|
+
[ModelTagValue.ToolInvocation]: {
|
|
166
|
+
icon: <IconCozWrenchFill />, //tool call
|
|
167
|
+
color: 'coz-fg-color-cyan',
|
|
168
|
+
bg: 'coz-mg-color-cyan',
|
|
169
|
+
},
|
|
170
|
+
[ModelTagValue.Reasoning]: {
|
|
171
|
+
icon: <IconCozLightbulbFill />, //inference
|
|
172
|
+
color: 'coz-fg-color-cyan',
|
|
173
|
+
bg: 'coz-mg-color-cyan',
|
|
174
|
+
},
|
|
175
|
+
};
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2025 coze-dev Authors
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
import { type PropsWithChildren } from 'react';
|
|
18
|
+
|
|
19
|
+
import cls from 'classnames';
|
|
20
|
+
import {
|
|
21
|
+
IconCozStarFill,
|
|
22
|
+
IconCozQuestionMarkCircle,
|
|
23
|
+
} from '@coze-arch/coze-design/icons';
|
|
24
|
+
import { Avatar, Divider, Tooltip } from '@coze-arch/coze-design';
|
|
25
|
+
|
|
26
|
+
export type ModelOptionGroupProps =
|
|
27
|
+
| {
|
|
28
|
+
/** New Model Zone */
|
|
29
|
+
type: 'new';
|
|
30
|
+
name: string;
|
|
31
|
+
tips?: string;
|
|
32
|
+
}
|
|
33
|
+
| {
|
|
34
|
+
/** Ordinary series model */
|
|
35
|
+
type?: 'normal';
|
|
36
|
+
icon: string;
|
|
37
|
+
name: string;
|
|
38
|
+
desc: string;
|
|
39
|
+
tips?: string;
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
export function ModelOptionGroup({
|
|
43
|
+
children,
|
|
44
|
+
...props
|
|
45
|
+
}: PropsWithChildren<ModelOptionGroupProps>) {
|
|
46
|
+
return (
|
|
47
|
+
<section>
|
|
48
|
+
<div className="pt-[12px] pl-[16px] pb-[2px]">
|
|
49
|
+
{props.type === 'new' ? (
|
|
50
|
+
<div className="flex items-center gap-[4px] coz-fg-hglt">
|
|
51
|
+
<IconCozStarFill />
|
|
52
|
+
<span className="text-[12px] leading-[16px]">{props.name}</span>
|
|
53
|
+
{props.tips ? (
|
|
54
|
+
<Tooltip content={props.tips}>
|
|
55
|
+
<IconCozQuestionMarkCircle className="cursor-pointer coz-fg-secondary" />
|
|
56
|
+
</Tooltip>
|
|
57
|
+
) : null}
|
|
58
|
+
</div>
|
|
59
|
+
) : (
|
|
60
|
+
<div className="flex items-center gap-[6px]">
|
|
61
|
+
<Avatar
|
|
62
|
+
shape="square"
|
|
63
|
+
className="w-[14px] h-[14px] rounded-[3px] !cursor-default border border-solid coz-stroke-primary"
|
|
64
|
+
src={props.icon}
|
|
65
|
+
/>
|
|
66
|
+
<div
|
|
67
|
+
className={cls(
|
|
68
|
+
'flex items-center gap-[4px]',
|
|
69
|
+
'text-[12px] leading-[16px]',
|
|
70
|
+
)}
|
|
71
|
+
>
|
|
72
|
+
<span className="coz-fg-secondary">{props.name}</span>
|
|
73
|
+
{props.tips ? (
|
|
74
|
+
<Tooltip content={props.tips}>
|
|
75
|
+
<IconCozQuestionMarkCircle className="cursor-pointer coz-fg-secondary" />
|
|
76
|
+
</Tooltip>
|
|
77
|
+
) : null}
|
|
78
|
+
<Divider layout="vertical" />
|
|
79
|
+
<span className="coz-fg-dim">{props.desc}</span>
|
|
80
|
+
</div>
|
|
81
|
+
</div>
|
|
82
|
+
)}
|
|
83
|
+
</div>
|
|
84
|
+
{children}
|
|
85
|
+
</section>
|
|
86
|
+
);
|
|
87
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2025 coze-dev Authors
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
import { I18n } from '@coze-arch/i18n';
|
|
18
|
+
import { Avatar, Tag } from '@coze-arch/coze-design';
|
|
19
|
+
import { type Model } from '@coze-arch/bot-api/developer_api';
|
|
20
|
+
|
|
21
|
+
/** Minimalist ModelOption for Button Display or Select Selected Bar */
|
|
22
|
+
export function ModelOptionThumb({ model }: { model: Model }) {
|
|
23
|
+
return (
|
|
24
|
+
<div className="px-[4px] flex items-center gap-[4px]">
|
|
25
|
+
<Avatar
|
|
26
|
+
shape="square"
|
|
27
|
+
size="extra-extra-small"
|
|
28
|
+
src={model.model_icon}
|
|
29
|
+
className="rounded-[4px] border border-solid coz-stroke-primary"
|
|
30
|
+
/>
|
|
31
|
+
<span className="text-[14px] leading-[20px] coz-fg-primary">
|
|
32
|
+
{model.name}
|
|
33
|
+
</span>
|
|
34
|
+
{model.model_status_details?.is_upcoming_deprecated ? (
|
|
35
|
+
<Tag size="mini" color="yellow">
|
|
36
|
+
{I18n.t('model_list_willDeprecated')}
|
|
37
|
+
</Tag>
|
|
38
|
+
) : null}
|
|
39
|
+
</div>
|
|
40
|
+
);
|
|
41
|
+
}
|
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2025 coze-dev Authors
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
import { type ReactNode, useRef, useState } from 'react';
|
|
18
|
+
|
|
19
|
+
import { isBoolean } from 'lodash-es';
|
|
20
|
+
import cls from 'classnames';
|
|
21
|
+
import { Popover, type PopoverProps } from '@coze-arch/coze-design';
|
|
22
|
+
import { IconCozArrowDown } from '@coze-arch/bot-icons';
|
|
23
|
+
import { type Model } from '@coze-arch/bot-api/developer_api';
|
|
24
|
+
|
|
25
|
+
import { PopoverModelListView } from '../popover-model-list-view';
|
|
26
|
+
import {
|
|
27
|
+
type ModelConfigProps,
|
|
28
|
+
PopoverModelConfigView,
|
|
29
|
+
} from '../popover-model-config-view';
|
|
30
|
+
import { ModelOptionThumb } from '../model-option-thumb';
|
|
31
|
+
|
|
32
|
+
export interface ModelSelectUIProps {
|
|
33
|
+
/**
|
|
34
|
+
* Whether to ban popovers
|
|
35
|
+
*
|
|
36
|
+
* The current internal implementation supports both disabled and directly does not allow popovers (consistent with historical logic).
|
|
37
|
+
* Also supports allowing popovers and viewing detailed configuration but prohibiting editing
|
|
38
|
+
* Flexible modification when requirements change
|
|
39
|
+
*/
|
|
40
|
+
disabled?: boolean;
|
|
41
|
+
/** The currently selected model */
|
|
42
|
+
selectedModelId: string;
|
|
43
|
+
/**
|
|
44
|
+
* Whether to display the jump to model details page (/space/: space_id/model/: model_id) button
|
|
45
|
+
* @default false
|
|
46
|
+
*/
|
|
47
|
+
enableJumpDetail?:
|
|
48
|
+
| {
|
|
49
|
+
spaceId: string;
|
|
50
|
+
}
|
|
51
|
+
| false;
|
|
52
|
+
/**
|
|
53
|
+
* Model-selected change events
|
|
54
|
+
*
|
|
55
|
+
* The return value indicates whether the switch was successful, which will affect some subsequent events, such as automatically closing the popover.
|
|
56
|
+
* No explicit return is considered true
|
|
57
|
+
*/
|
|
58
|
+
// eslint-disable-next-line @typescript-eslint/no-invalid-void-type -- there is no other way to implement [either do not return, or must return boolean]
|
|
59
|
+
onModelChange: (model: Model) => boolean | void;
|
|
60
|
+
modelList: Model[];
|
|
61
|
+
/**
|
|
62
|
+
* Allows business side custom trigger display, named alignment semi selected components
|
|
63
|
+
*
|
|
64
|
+
* @Param model - when selectedModelId cannot find the corresponding model, this will pass undefined
|
|
65
|
+
*/
|
|
66
|
+
triggerRender?: (model?: Model, popoverVisible?: boolean) => ReactNode;
|
|
67
|
+
/**
|
|
68
|
+
* Businesses such as workflow that do not allow detailed configuration will have clickToHide demands.
|
|
69
|
+
* @default false
|
|
70
|
+
*/
|
|
71
|
+
clickToHide?: boolean;
|
|
72
|
+
/** @default bottomLeft */
|
|
73
|
+
popoverPosition?: PopoverProps['position'];
|
|
74
|
+
/** @default true */
|
|
75
|
+
popoverAutoAdjustOverflow?: boolean;
|
|
76
|
+
/** The className of the trigger. If you pass in triggerRender, triggerRender takes over the rendering completely. This parameter no longer has any effect */
|
|
77
|
+
className?: string;
|
|
78
|
+
popoverClassName?: string;
|
|
79
|
+
/**
|
|
80
|
+
* If the business side inserts a Modal outside the component by itself, clicking Modal will also trigger onClickOutSide and cause the popover to close.
|
|
81
|
+
* If you don't want the popover to close unexpectedly, you need to pass Modal through modalSlot
|
|
82
|
+
*
|
|
83
|
+
* (You don't even need to set getPopupContainer, the mount layer of Modal and the mount layer of ModelSelect's Popover are still different, but mysteriously no longer trigger onClickOutSide, semi awesome)
|
|
84
|
+
*/
|
|
85
|
+
modalSlot?: ReactNode;
|
|
86
|
+
|
|
87
|
+
/** The detailed configuration information of the model will be hidden if the button entrance of the detailed configuration is not passed. */
|
|
88
|
+
modelConfigProps?: ModelConfigProps;
|
|
89
|
+
|
|
90
|
+
/** The pop-up window has a variety of rendering scenarios, providing options to customize the rendering hierarchy to avoid overwriting */
|
|
91
|
+
zIndex?: number;
|
|
92
|
+
|
|
93
|
+
/** Model List Extra Head Slots */
|
|
94
|
+
modelListExtraHeaderSlot?: ReactNode;
|
|
95
|
+
|
|
96
|
+
/** Whether to expand the model list by default */
|
|
97
|
+
defaultOpen?: boolean;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
export function ModelSelectUI({
|
|
101
|
+
className,
|
|
102
|
+
disabled,
|
|
103
|
+
enableJumpDetail,
|
|
104
|
+
popoverClassName,
|
|
105
|
+
selectedModelId,
|
|
106
|
+
modelList,
|
|
107
|
+
onModelChange,
|
|
108
|
+
triggerRender,
|
|
109
|
+
modelListExtraHeaderSlot,
|
|
110
|
+
clickToHide = false,
|
|
111
|
+
popoverPosition = 'bottomLeft',
|
|
112
|
+
popoverAutoAdjustOverflow = true,
|
|
113
|
+
modalSlot,
|
|
114
|
+
modelConfigProps,
|
|
115
|
+
zIndex = 999,
|
|
116
|
+
defaultOpen = false,
|
|
117
|
+
}: ModelSelectUIProps) {
|
|
118
|
+
/** In order to achieve the same width as Select for Popover, get the Select width through this ref (if you pass in triggerRender, you no longer need to keep it consistent) */
|
|
119
|
+
const selectRef = useRef<HTMLDivElement>(null);
|
|
120
|
+
const [popoverVisible, setPopoverVisible] = useState(defaultOpen);
|
|
121
|
+
const [detailConfigVisible, setDetailConfigVisible] = useState(false);
|
|
122
|
+
|
|
123
|
+
const selectedModel = modelList.find(
|
|
124
|
+
({ model_type }) => selectedModelId === String(model_type),
|
|
125
|
+
);
|
|
126
|
+
|
|
127
|
+
// Need to implement group + custom option effect, Select component compatibility is not good, have to implement Popover
|
|
128
|
+
return (
|
|
129
|
+
<Popover
|
|
130
|
+
zIndex={zIndex}
|
|
131
|
+
stopPropagation
|
|
132
|
+
autoAdjustOverflow={popoverAutoAdjustOverflow}
|
|
133
|
+
visible={popoverVisible}
|
|
134
|
+
trigger="click"
|
|
135
|
+
position={popoverPosition}
|
|
136
|
+
onClickOutSide={() => {
|
|
137
|
+
setPopoverVisible(false);
|
|
138
|
+
setDetailConfigVisible(false);
|
|
139
|
+
}}
|
|
140
|
+
className={cls('!p-0')}
|
|
141
|
+
content={
|
|
142
|
+
<div
|
|
143
|
+
className={cls(
|
|
144
|
+
'w-[480px] max-h-[50vh] !p-0 overflow-hidden',
|
|
145
|
+
popoverClassName,
|
|
146
|
+
)}
|
|
147
|
+
style={
|
|
148
|
+
selectRef.current
|
|
149
|
+
? { width: selectRef.current.clientWidth }
|
|
150
|
+
: undefined
|
|
151
|
+
}
|
|
152
|
+
>
|
|
153
|
+
{modelConfigProps ? (
|
|
154
|
+
<PopoverModelConfigView
|
|
155
|
+
disabled={disabled}
|
|
156
|
+
visible={detailConfigVisible}
|
|
157
|
+
selectedModel={selectedModel}
|
|
158
|
+
onClose={() => setDetailConfigVisible(false)}
|
|
159
|
+
modelConfigProps={modelConfigProps}
|
|
160
|
+
/>
|
|
161
|
+
) : null}
|
|
162
|
+
|
|
163
|
+
<PopoverModelListView
|
|
164
|
+
// Use hidden instead of direct conditional mount to preserve scrollTop, designer's care
|
|
165
|
+
hidden={detailConfigVisible}
|
|
166
|
+
disabled={disabled}
|
|
167
|
+
selectedModelId={selectedModelId}
|
|
168
|
+
selectedModel={selectedModel}
|
|
169
|
+
modelList={modelList}
|
|
170
|
+
extraHeaderSlot={modelListExtraHeaderSlot}
|
|
171
|
+
onModelClick={(m: Model) => {
|
|
172
|
+
const res = onModelChange(m);
|
|
173
|
+
const success = isBoolean(res) ? res : true;
|
|
174
|
+
if (success && clickToHide) {
|
|
175
|
+
setPopoverVisible(false);
|
|
176
|
+
setDetailConfigVisible(false);
|
|
177
|
+
}
|
|
178
|
+
return success;
|
|
179
|
+
}}
|
|
180
|
+
enableJumpDetail={!!enableJumpDetail}
|
|
181
|
+
onDetailClick={modelId => {
|
|
182
|
+
if (!enableJumpDetail) {
|
|
183
|
+
return;
|
|
184
|
+
}
|
|
185
|
+
window.open(
|
|
186
|
+
`/space/${enableJumpDetail.spaceId}/model/${modelId}`,
|
|
187
|
+
'_blank',
|
|
188
|
+
);
|
|
189
|
+
}}
|
|
190
|
+
enableConfig={!!modelConfigProps}
|
|
191
|
+
onConfigClick={() => {
|
|
192
|
+
if (!modelConfigProps) {
|
|
193
|
+
return;
|
|
194
|
+
}
|
|
195
|
+
setDetailConfigVisible(true);
|
|
196
|
+
}}
|
|
197
|
+
/>
|
|
198
|
+
|
|
199
|
+
{modalSlot}
|
|
200
|
+
</div>
|
|
201
|
+
}
|
|
202
|
+
>
|
|
203
|
+
{triggerRender ? (
|
|
204
|
+
<span
|
|
205
|
+
className={disabled ? 'cursor-not-allowed' : 'cursor-pointer'}
|
|
206
|
+
onClick={() => {
|
|
207
|
+
if (!disabled) {
|
|
208
|
+
setPopoverVisible(true);
|
|
209
|
+
}
|
|
210
|
+
}}
|
|
211
|
+
>
|
|
212
|
+
{triggerRender(selectedModel, popoverVisible)}
|
|
213
|
+
</span>
|
|
214
|
+
) : (
|
|
215
|
+
<div
|
|
216
|
+
ref={selectRef}
|
|
217
|
+
className={cls(
|
|
218
|
+
'w-full p-[4px] flex items-center justify-between rounded-[8px]',
|
|
219
|
+
'overflow-hidden cursor-pointer border border-solid',
|
|
220
|
+
'hover:coz-mg-secondary-hovered active:coz-mg-secondary-pressed',
|
|
221
|
+
popoverVisible ? 'coz-stroke-hglt' : 'coz-stroke-primary',
|
|
222
|
+
className,
|
|
223
|
+
)}
|
|
224
|
+
onClick={() => {
|
|
225
|
+
if (!disabled) {
|
|
226
|
+
setPopoverVisible(true);
|
|
227
|
+
}
|
|
228
|
+
}}
|
|
229
|
+
>
|
|
230
|
+
<ModelOptionThumb
|
|
231
|
+
model={selectedModel || { name: selectedModelId }}
|
|
232
|
+
/>
|
|
233
|
+
<IconCozArrowDown className="coz-fg-secondary" />
|
|
234
|
+
</div>
|
|
235
|
+
)}
|
|
236
|
+
</Popover>
|
|
237
|
+
);
|
|
238
|
+
}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2025 coze-dev Authors
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
import { type ReactNode, useMemo } from 'react';
|
|
18
|
+
|
|
19
|
+
import { groupBy } from 'lodash-es';
|
|
20
|
+
import cls from 'classnames';
|
|
21
|
+
import { I18n } from '@coze-arch/i18n';
|
|
22
|
+
import { type Model } from '@coze-arch/bot-api/developer_api';
|
|
23
|
+
|
|
24
|
+
import { ModelOptionGroup } from '../model-option-group';
|
|
25
|
+
import { ModelOption } from '../model-option';
|
|
26
|
+
|
|
27
|
+
/** Popover's model list state corresponds to the detailed configuration state. Splitting purely to avoid oversized components */
|
|
28
|
+
export function PopoverModelListView({
|
|
29
|
+
hidden,
|
|
30
|
+
disabled,
|
|
31
|
+
selectedModelId,
|
|
32
|
+
selectedModel,
|
|
33
|
+
modelList,
|
|
34
|
+
extraHeaderSlot,
|
|
35
|
+
onModelClick,
|
|
36
|
+
onDetailClick,
|
|
37
|
+
onConfigClick,
|
|
38
|
+
enableConfig,
|
|
39
|
+
enableJumpDetail,
|
|
40
|
+
}: {
|
|
41
|
+
/** Whether to set the list to display: none (to preserve scrollTop information) */
|
|
42
|
+
hidden: boolean;
|
|
43
|
+
disabled?: boolean;
|
|
44
|
+
selectedModelId: string;
|
|
45
|
+
selectedModel: Model | undefined;
|
|
46
|
+
modelList: Model[];
|
|
47
|
+
/** Extra head slot */
|
|
48
|
+
extraHeaderSlot?: ReactNode;
|
|
49
|
+
/** Return whether the switch was successful */
|
|
50
|
+
onModelClick: (model: Model) => boolean;
|
|
51
|
+
onDetailClick: (modelId: string) => void;
|
|
52
|
+
onConfigClick: (model: Model) => void;
|
|
53
|
+
enableConfig?: boolean;
|
|
54
|
+
enableJumpDetail?: boolean;
|
|
55
|
+
}) {
|
|
56
|
+
const { modelGroups } = useMemo(() => {
|
|
57
|
+
/** The open-source version is not classified, but tiled */
|
|
58
|
+
if (IS_OPEN_SOURCE) {
|
|
59
|
+
return { modelGroups: [modelList] };
|
|
60
|
+
}
|
|
61
|
+
const modelSeriesGroups = groupBy(
|
|
62
|
+
modelList,
|
|
63
|
+
model => model.model_series?.series_name,
|
|
64
|
+
);
|
|
65
|
+
return {
|
|
66
|
+
modelGroups: Object.values(modelSeriesGroups).filter(
|
|
67
|
+
(group): group is Model[] => !!group?.length,
|
|
68
|
+
),
|
|
69
|
+
};
|
|
70
|
+
}, [modelList]);
|
|
71
|
+
|
|
72
|
+
const renderModelOption = (model: Model) => (
|
|
73
|
+
<ModelOption
|
|
74
|
+
key={model.model_type}
|
|
75
|
+
model={model}
|
|
76
|
+
disabled={disabled}
|
|
77
|
+
selected={String(model.model_type) === selectedModelId}
|
|
78
|
+
onClick={() => onModelClick(model)}
|
|
79
|
+
enableJumpDetail={enableJumpDetail}
|
|
80
|
+
onDetailClick={onDetailClick}
|
|
81
|
+
enableConfig={
|
|
82
|
+
enableConfig &&
|
|
83
|
+
// In the disabled state, you can only view the detailed configuration of the selected model
|
|
84
|
+
(!disabled || String(model.model_type) === selectedModelId)
|
|
85
|
+
}
|
|
86
|
+
onConfigClick={() => {
|
|
87
|
+
onConfigClick(model);
|
|
88
|
+
}}
|
|
89
|
+
/>
|
|
90
|
+
);
|
|
91
|
+
|
|
92
|
+
return (
|
|
93
|
+
<div
|
|
94
|
+
className={cls(
|
|
95
|
+
'max-h-[inherit]', // https://stackoverflow.com/questions/14262938/child-with-max-height-100-overflows-parent
|
|
96
|
+
'p-[8px] flex flex-col gap-[8px] overflow-auto',
|
|
97
|
+
{
|
|
98
|
+
hidden,
|
|
99
|
+
},
|
|
100
|
+
)}
|
|
101
|
+
>
|
|
102
|
+
<div className="flex items-center justify-between pl-4 pr-2 box-content h-[32px] pb-2 pt-1">
|
|
103
|
+
<div className="text-xxl font-medium coz-fg-plus">
|
|
104
|
+
{I18n.t('model_selection')}
|
|
105
|
+
</div>
|
|
106
|
+
{extraHeaderSlot}
|
|
107
|
+
</div>
|
|
108
|
+
{selectedModel?.model_status_details?.is_upcoming_deprecated ? (
|
|
109
|
+
<section className="p-[12px] pl-[16px] rounded-[8px] coz-mg-hglt-yellow">
|
|
110
|
+
<div className="text-[14px] leading-[20px] font-medium coz-fg-plus">
|
|
111
|
+
{I18n.t('model_list_model_deprecation_notice')}
|
|
112
|
+
</div>
|
|
113
|
+
<div className="text-[12px] leading-[16px] coz-fg-primary">
|
|
114
|
+
{I18n.t('model_list_model_switch_announcement', {
|
|
115
|
+
model_deprecated: selectedModel.name,
|
|
116
|
+
date: selectedModel.model_status_details.deprecated_date,
|
|
117
|
+
model_up: selectedModel.model_status_details.replace_model_name,
|
|
118
|
+
})}
|
|
119
|
+
</div>
|
|
120
|
+
</section>
|
|
121
|
+
) : null}
|
|
122
|
+
|
|
123
|
+
{modelGroups.map((group, idx) => {
|
|
124
|
+
if (IS_OPEN_SOURCE) {
|
|
125
|
+
return group.map(renderModelOption);
|
|
126
|
+
}
|
|
127
|
+
return (
|
|
128
|
+
<ModelOptionGroup
|
|
129
|
+
key={group[0]?.model_series?.series_name ?? idx}
|
|
130
|
+
type={
|
|
131
|
+
group[0]?.model_status_details?.is_new_model ? 'new' : 'normal'
|
|
132
|
+
}
|
|
133
|
+
icon={group[0]?.model_series?.icon_url || ''}
|
|
134
|
+
name={group[0]?.model_series?.series_name || ''}
|
|
135
|
+
desc={I18n.t('model_list_model_company', {
|
|
136
|
+
company: group[0]?.model_series?.model_vendor || '',
|
|
137
|
+
})}
|
|
138
|
+
tips={group[0]?.model_series?.model_tips || ''}
|
|
139
|
+
>
|
|
140
|
+
{group.map(renderModelOption)}
|
|
141
|
+
</ModelOptionGroup>
|
|
142
|
+
);
|
|
143
|
+
})}
|
|
144
|
+
</div>
|
|
145
|
+
);
|
|
146
|
+
}
|