@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.
Files changed (336) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +114 -3
  3. package/THIRD-PARTY-NOTICES.md +57 -0
  4. package/dist/ai-markdown-esl-I5ck.js +7 -0
  5. package/dist/chrome.d.ts +11 -0
  6. package/dist/chrome.js +358 -0
  7. package/dist/core.d.ts +11 -0
  8. package/dist/core.js +3 -0
  9. package/dist/coze/compat/base.d.ts +116 -0
  10. package/dist/coze/control-icon.d.ts +15 -0
  11. package/dist/coze/execution-panel.d.ts +8 -0
  12. package/dist/coze/schema-tree.d.ts +9 -0
  13. package/dist/coze/side-panel.d.ts +12 -0
  14. package/dist/coze/source/form-extensions/components/output-tree/components/custom-tree-node/constants.d.ts +13 -0
  15. package/dist/coze/source/form-extensions/components/output-tree/components/custom-tree-node/type.d.ts +34 -0
  16. package/dist/coze/start-form.d.ts +9 -0
  17. package/dist/coze/test-input.d.ts +9 -0
  18. package/dist/coze/test-run-button.d.ts +4 -0
  19. package/dist/coze/workflow-header.d.ts +5 -0
  20. package/dist/designer.d.ts +2 -0
  21. package/dist/flowgram-designer.d.ts +63 -0
  22. package/dist/graph-scope.d.ts +78 -0
  23. package/dist/header-shortcuts-BQZuNfpA.js +6 -0
  24. package/dist/index.d.ts +6 -0
  25. package/dist/index.js +8694 -0
  26. package/dist/input-fields.d.ts +4 -0
  27. package/dist/observation-types.d.ts +6 -0
  28. package/dist/panel-focus.d.ts +3 -0
  29. package/dist/prompt-kit.d.ts +47 -0
  30. package/dist/result-preview.d.ts +5 -0
  31. package/dist/schema-tree-CTM6hEdm.js +309 -0
  32. package/dist/start-form-L6xw9phk.js +9330 -0
  33. package/dist/styles.css +2 -0
  34. package/dist/templates.d.ts +1 -0
  35. package/dist/test-input-validation-CkORPCfm.js +55 -0
  36. package/dist/test-input-validation.d.ts +11 -0
  37. package/dist/theme.d.ts +17 -0
  38. package/package.json +103 -4
  39. package/vendor/coze/LICENSE-APACHE +177 -0
  40. package/vendor/coze/UPSTREAM.json +2247 -0
  41. package/vendor/coze/original/base-test-button.tsx +22 -0
  42. package/vendor/coze/original/comment-container.tsx +68 -0
  43. package/vendor/coze/original/condition-container.tsx +60 -0
  44. package/vendor/coze/original/condition-tag.tsx +58 -0
  45. package/vendor/coze/original/coze-global.less +234 -0
  46. package/vendor/coze/original/create-loop-function-json.ts +134 -0
  47. package/vendor/coze/original/create-loop-function.ts +56 -0
  48. package/vendor/coze/original/end-registry.ts +41 -0
  49. package/vendor/coze/original/execute-result-panel.less +97 -0
  50. package/vendor/coze/original/execute-result-panel.tsx +171 -0
  51. package/vendor/coze/original/form-item.less +39 -0
  52. package/vendor/coze/original/form-item.tsx +200 -0
  53. package/vendor/coze/original/http-api-field.tsx +42 -0
  54. package/vendor/coze/original/http-form-render.tsx +102 -0
  55. package/vendor/coze/original/icon-add.svg +3 -0
  56. package/vendor/coze/original/icon-arrow-left.svg +3 -0
  57. package/vendor/coze/original/icon-auto-layout.svg +18 -0
  58. package/vendor/coze/original/icon-batch.jpg +0 -0
  59. package/vendor/coze/original/icon-break.jpg +0 -0
  60. package/vendor/coze/original/icon-code.svg +13 -0
  61. package/vendor/coze/original/icon-condition.jpg +0 -0
  62. package/vendor/coze/original/icon-condition.svg +12 -0
  63. package/vendor/coze/original/icon-continue.jpg +0 -0
  64. package/vendor/coze/original/icon-database-query.jpg +0 -0
  65. package/vendor/coze/original/icon-database-update.jpg +0 -0
  66. package/vendor/coze/original/icon-database.svg +18 -0
  67. package/vendor/coze/original/icon-delete.svg +5 -0
  68. package/vendor/coze/original/icon-end.jpg +0 -0
  69. package/vendor/coze/original/icon-fullscreen.svg +9 -0
  70. package/vendor/coze/original/icon-http.jpg +0 -0
  71. package/vendor/coze/original/icon-intent.jpg +0 -0
  72. package/vendor/coze/original/icon-json-parser.jpg +0 -0
  73. package/vendor/coze/original/icon-json-stringify.jpg +0 -0
  74. package/vendor/coze/original/icon-llm.jpg +0 -0
  75. package/vendor/coze/original/icon-loop.jpg +0 -0
  76. package/vendor/coze/original/icon-more.svg +11 -0
  77. package/vendor/coze/original/icon-play-round-outlined.svg +8 -0
  78. package/vendor/coze/original/icon-plugin-tool.svg +6 -0
  79. package/vendor/coze/original/icon-standard-copy.svg +8 -0
  80. package/vendor/coze/original/icon-start.jpg +0 -0
  81. package/vendor/coze/original/icon-text.jpg +0 -0
  82. package/vendor/coze/original/icon-unknown.svg +7 -0
  83. package/vendor/coze/original/icon-var.svg +6 -0
  84. package/vendor/coze/original/icon-variable-assign.jpg +0 -0
  85. package/vendor/coze/original/icon-variable-merge.jpg +0 -0
  86. package/vendor/coze/original/icon-workflow-end.svg +5 -0
  87. package/vendor/coze/original/icon-workflow-start.svg +5 -0
  88. package/vendor/coze/original/icon-workflow.jpg +0 -0
  89. package/vendor/coze/original/icon-workflow.svg +21 -0
  90. package/vendor/coze/original/icon-workflows.svg +5 -0
  91. package/vendor/coze/original/if-form-meta.tsx +88 -0
  92. package/vendor/coze/original/logic-display.tsx +33 -0
  93. package/vendor/coze/original/mouse-icon.tsx +35 -0
  94. package/vendor/coze/original/mouse-pad-selector.tsx +180 -0
  95. package/vendor/coze/original/node-card.tsx +77 -0
  96. package/vendor/coze/original/node-category-panel.less +4 -0
  97. package/vendor/coze/original/node-category-panel.tsx +53 -0
  98. package/vendor/coze/original/node-config-form.tsx +67 -0
  99. package/vendor/coze/original/node-header.less +165 -0
  100. package/vendor/coze/original/node-header.tsx +552 -0
  101. package/vendor/coze/original/node-panel.less +183 -0
  102. package/vendor/coze/original/node-render.less +20 -0
  103. package/vendor/coze/original/node-side-sheet.less +57 -0
  104. package/vendor/coze/original/node-side-sheet.tsx +214 -0
  105. package/vendor/coze/original/node-wrapper.tsx +71 -0
  106. package/vendor/coze/original/pad-icon.tsx +45 -0
  107. package/vendor/coze/original/resizable-side-panel-constants.ts +18 -0
  108. package/vendor/coze/original/resizable-side-panel.tsx +42 -0
  109. package/vendor/coze/original/start-registry.ts +53 -0
  110. package/vendor/coze/original/sub-canvas-background.less +4 -0
  111. package/vendor/coze/original/sub-canvas-background.tsx +48 -0
  112. package/vendor/coze/original/sub-canvas-container.less +16 -0
  113. package/vendor/coze/original/sub-canvas-container.tsx +97 -0
  114. package/vendor/coze/original/sub-canvas-header.less +75 -0
  115. package/vendor/coze/original/sub-canvas-header.tsx +95 -0
  116. package/vendor/coze/original/test-form-sheet-header.tsx +82 -0
  117. package/vendor/coze/original/test-form-sheet.less +178 -0
  118. package/vendor/coze/original/toolbar-add-node.tsx +68 -0
  119. package/vendor/coze/original/toolbar-auto-layout.tsx +61 -0
  120. package/vendor/coze/original/toolbar-comment.tsx +121 -0
  121. package/vendor/coze/original/toolbar-container.tsx +42 -0
  122. package/vendor/coze/original/toolbar-interactive.tsx +98 -0
  123. package/vendor/coze/original/toolbar-minimap-switch.tsx +41 -0
  124. package/vendor/coze/original/toolbar-tools.less +46 -0
  125. package/vendor/coze/original/toolbar-tools.tsx +89 -0
  126. package/vendor/coze/original/toolbar-zoom.tsx +134 -0
  127. package/vendor/coze/original/tree-variable-selector.less +292 -0
  128. package/vendor/coze/original/tree-variable-selector.tsx +298 -0
  129. package/vendor/coze/original/workflow-document-custom-options.ts +151 -0
  130. package/vendor/coze/original/workflow-header.less +65 -0
  131. package/vendor/coze/original/workflow-header.tsx +85 -0
  132. package/vendor/coze/source/agent-models/model-option/index.module.less +19 -0
  133. package/vendor/coze/source/agent-models/model-option/index.tsx +321 -0
  134. package/vendor/coze/source/agent-models/model-option-avatar/index.tsx +175 -0
  135. package/vendor/coze/source/agent-models/model-option-group/index.tsx +87 -0
  136. package/vendor/coze/source/agent-models/model-option-thumb/index.tsx +41 -0
  137. package/vendor/coze/source/agent-models/model-select-ui/index.tsx +238 -0
  138. package/vendor/coze/source/agent-models/popover-model-list-view/index.tsx +146 -0
  139. package/vendor/coze/source/components/code-editor/text-editor.tsx +71 -0
  140. package/vendor/coze/source/components/comment/components/editor/block.tsx +117 -0
  141. package/vendor/coze/source/components/comment/components/editor/leaf.tsx +64 -0
  142. package/vendor/coze/source/components/comment/components/toolbar.tsx +366 -0
  143. package/vendor/coze/source/components/comment/constant.ts +94 -0
  144. package/vendor/coze/source/components/editor-container/expand-editor/index.module.less +107 -0
  145. package/vendor/coze/source/components/editor-container/expand-editor/index.tsx +117 -0
  146. package/vendor/coze/source/components/model-select/components/model-setting.tsx +300 -0
  147. package/vendor/coze/source/components/model-select/components/settings.tsx +144 -0
  148. package/vendor/coze/source/components/model-select/index.module.less +34 -0
  149. package/vendor/coze/source/components/model-select/utils/index.tsx +100 -0
  150. package/vendor/coze/source/components/node-render/node-render-new/fields/constants.tsx +79 -0
  151. package/vendor/coze/source/components/node-render/node-render-new/fields/field-empty.module.less +12 -0
  152. package/vendor/coze/source/components/node-render/node-render-new/fields/field-empty.tsx +37 -0
  153. package/vendor/coze/source/components/node-render/node-render-new/fields/field.module.less +19 -0
  154. package/vendor/coze/source/components/node-render/node-render-new/fields/field.tsx +52 -0
  155. package/vendor/coze/source/components/node-render/node-render-new/fields/http-api-field/index.tsx +42 -0
  156. package/vendor/coze/source/components/node-render/node-render-new/fields/overflow-tag-list.module.less +47 -0
  157. package/vendor/coze/source/components/node-render/node-render-new/fields/overflow-tag-list.tsx +162 -0
  158. package/vendor/coze/source/components/node-render/node-render-new/fields/variable-tag-list.module.less +48 -0
  159. package/vendor/coze/source/components/node-render/node-render-new/fields/variable-tag-list.tsx +126 -0
  160. package/vendor/coze/source/components/node-wrapper/execute-result-panel/index.module.less +97 -0
  161. package/vendor/coze/source/components/node-wrapper/execute-result-panel/index.tsx +171 -0
  162. package/vendor/coze/source/components/sub-canvas/components/background/index.module.less +4 -0
  163. package/vendor/coze/source/components/sub-canvas/components/header/index.module.less +75 -0
  164. package/vendor/coze/source/components/test-run/test-run-button/single-node.tsx +158 -0
  165. package/vendor/coze/source/execution-panel/panel.module.less +48 -0
  166. package/vendor/coze/source/execution-panel/panel.tsx +99 -0
  167. package/vendor/coze/source/execution-panel/use-resize.ts +79 -0
  168. package/vendor/coze/source/external/features/log/components/data-viewer/constants.ts +28 -0
  169. package/vendor/coze/source/external/features/log/components/data-viewer/context/context.ts +21 -0
  170. package/vendor/coze/source/external/features/log/components/data-viewer/context/create-store.ts +48 -0
  171. package/vendor/coze/source/external/features/log/components/data-viewer/context/index.ts +19 -0
  172. package/vendor/coze/source/external/features/log/components/data-viewer/context/provider.tsx +50 -0
  173. package/vendor/coze/source/external/features/log/components/data-viewer/data-viewer.module.less +26 -0
  174. package/vendor/coze/source/external/features/log/components/data-viewer/data-viewer.tsx +79 -0
  175. package/vendor/coze/source/external/features/log/components/data-viewer/hooks/index.ts +18 -0
  176. package/vendor/coze/source/external/features/log/components/data-viewer/hooks/use-data-viewer-store.ts +29 -0
  177. package/vendor/coze/source/external/features/log/components/data-viewer/hooks/use-expand.ts +35 -0
  178. package/vendor/coze/source/external/features/log/components/data-viewer/hooks/use-value.tsx +66 -0
  179. package/vendor/coze/source/external/features/log/components/data-viewer/index.tsx +21 -0
  180. package/vendor/coze/source/external/features/log/components/data-viewer/json-field/index.tsx +186 -0
  181. package/vendor/coze/source/external/features/log/components/data-viewer/json-field/json-field.module.less +79 -0
  182. package/vendor/coze/source/external/features/log/components/data-viewer/types.ts +50 -0
  183. package/vendor/coze/source/external/features/log/components/data-viewer/utils/big-number.ts +35 -0
  184. package/vendor/coze/source/external/features/log/components/data-viewer/utils/generate-field.ts +104 -0
  185. package/vendor/coze/source/external/features/log/components/log-parser/log-wrap.module.less +27 -0
  186. package/vendor/coze/source/external/features/log/components/log-parser/log-wrap.tsx +109 -0
  187. package/vendor/coze/source/external/features/log/components/node-status-bar/node-status-bar.module.less +52 -0
  188. package/vendor/coze/source/external/features/log/components/node-status-bar/node-status-bar.tsx +113 -0
  189. package/vendor/coze/source/form/components/field-empty.tsx +45 -0
  190. package/vendor/coze/source/form/components/section.tsx +91 -0
  191. package/vendor/coze/source/form-extensions/components/add-item-button/index.tsx +64 -0
  192. package/vendor/coze/source/form-extensions/components/form-card/index.module.less +131 -0
  193. package/vendor/coze/source/form-extensions/components/form-card/index.tsx +309 -0
  194. package/vendor/coze/source/form-extensions/components/form-item/index.module.less +39 -0
  195. package/vendor/coze/source/form-extensions/components/form-item/index.tsx +200 -0
  196. package/vendor/coze/source/form-extensions/components/form-item-feedback/index.module.less +7 -0
  197. package/vendor/coze/source/form-extensions/components/form-item-feedback/index.tsx +39 -0
  198. package/vendor/coze/source/form-extensions/components/level-line/index.module.less +346 -0
  199. package/vendor/coze/source/form-extensions/components/level-line/index.ts +17 -0
  200. package/vendor/coze/source/form-extensions/components/level-line/level-line.tsx +460 -0
  201. package/vendor/coze/source/form-extensions/components/level-line/types.ts +38 -0
  202. package/vendor/coze/source/form-extensions/components/level-line/utils.ts +60 -0
  203. package/vendor/coze/source/form-extensions/components/literal-value-input/constants.ts +61 -0
  204. package/vendor/coze/source/form-extensions/components/literal-value-input/input-boolean.tsx +80 -0
  205. package/vendor/coze/source/form-extensions/components/literal-value-input/input-integer.tsx +68 -0
  206. package/vendor/coze/source/form-extensions/components/literal-value-input/input-number.tsx +62 -0
  207. package/vendor/coze/source/form-extensions/components/literal-value-input/input-select.tsx +59 -0
  208. package/vendor/coze/source/form-extensions/components/literal-value-input/input-string.tsx +55 -0
  209. package/vendor/coze/source/form-extensions/components/literal-value-input/literal-value-input.tsx +35 -0
  210. package/vendor/coze/source/form-extensions/components/literal-value-input/styles.module.less +46 -0
  211. package/vendor/coze/source/form-extensions/components/literal-value-input/type.ts +61 -0
  212. package/vendor/coze/source/form-extensions/components/literal-value-input/utils.tsx +117 -0
  213. package/vendor/coze/source/form-extensions/components/node-header/components/close-button.tsx +44 -0
  214. package/vendor/coze/source/form-extensions/components/node-header/description-display.tsx +52 -0
  215. package/vendor/coze/source/form-extensions/components/node-header/description.tsx +131 -0
  216. package/vendor/coze/source/form-extensions/components/node-header/index.module.less +165 -0
  217. package/vendor/coze/source/form-extensions/components/node-header/index.tsx +552 -0
  218. package/vendor/coze/source/form-extensions/components/output-tree/components/custom-tree-node/components/expand-btn/index.tsx +43 -0
  219. package/vendor/coze/source/form-extensions/components/output-tree/components/custom-tree-node/components/expand-content/default-value-input.tsx +276 -0
  220. package/vendor/coze/source/form-extensions/components/output-tree/components/custom-tree-node/components/expand-content/index.module.less +124 -0
  221. package/vendor/coze/source/form-extensions/components/output-tree/components/custom-tree-node/components/expand-content/index.tsx +131 -0
  222. package/vendor/coze/source/form-extensions/components/output-tree/components/custom-tree-node/components/expand-content/types.ts +32 -0
  223. package/vendor/coze/source/form-extensions/components/output-tree/components/custom-tree-node/components/param-name/index.module.less +38 -0
  224. package/vendor/coze/source/form-extensions/components/output-tree/components/custom-tree-node/components/param-name/index.tsx +101 -0
  225. package/vendor/coze/source/form-extensions/components/output-tree/components/custom-tree-node/components/param-operator/index.module.less +51 -0
  226. package/vendor/coze/source/form-extensions/components/output-tree/components/custom-tree-node/components/param-operator/index.tsx +107 -0
  227. package/vendor/coze/source/form-extensions/components/output-tree/components/custom-tree-node/components/param-required/index.module.less +17 -0
  228. package/vendor/coze/source/form-extensions/components/output-tree/components/custom-tree-node/components/param-required/index.tsx +53 -0
  229. package/vendor/coze/source/form-extensions/components/output-tree/components/custom-tree-node/components/param-type/constants.tsx +77 -0
  230. package/vendor/coze/source/form-extensions/components/output-tree/components/custom-tree-node/components/param-type/index.module.less +97 -0
  231. package/vendor/coze/source/form-extensions/components/output-tree/components/custom-tree-node/components/param-type/index.tsx +155 -0
  232. package/vendor/coze/source/form-extensions/components/output-tree/components/custom-tree-node/constants.ts +38 -0
  233. package/vendor/coze/source/form-extensions/components/output-tree/components/custom-tree-node/index.module.less +138 -0
  234. package/vendor/coze/source/form-extensions/components/output-tree/components/custom-tree-node/index.tsx +360 -0
  235. package/vendor/coze/source/form-extensions/components/output-tree/components/custom-tree-node/type.ts +88 -0
  236. package/vendor/coze/source/form-extensions/components/output-tree/components/header/index.module.less +36 -0
  237. package/vendor/coze/source/form-extensions/components/output-tree/components/header/index.tsx +104 -0
  238. package/vendor/coze/source/form-extensions/components/output-tree/constants.ts +22 -0
  239. package/vendor/coze/source/form-extensions/components/output-tree/context.ts +28 -0
  240. package/vendor/coze/source/form-extensions/components/output-tree/hooks/use-columns-style.ts +39 -0
  241. package/vendor/coze/source/form-extensions/components/output-tree/index.module.less +83 -0
  242. package/vendor/coze/source/form-extensions/components/output-tree/index.tsx +692 -0
  243. package/vendor/coze/source/form-extensions/components/output-tree/utils.ts +185 -0
  244. package/vendor/coze/source/form-extensions/components/setting-on-error/components/process-type/index.tsx +97 -0
  245. package/vendor/coze/source/form-extensions/components/setting-on-error/components/process-type/option-item.tsx +30 -0
  246. package/vendor/coze/source/form-extensions/components/setting-on-error/components/process-type/types.ts +23 -0
  247. package/vendor/coze/source/form-extensions/components/setting-on-error/components/retry-times/index.tsx +45 -0
  248. package/vendor/coze/source/form-extensions/components/setting-on-error/components/timeout/index.tsx +102 -0
  249. package/vendor/coze/source/form-extensions/components/tree-variable-selector/composite-select-option.tsx +167 -0
  250. package/vendor/coze/source/form-extensions/components/tree-variable-selector/composite-select-tree-panel.tsx +165 -0
  251. package/vendor/coze/source/form-extensions/components/tree-variable-selector/composite-select.module.less +96 -0
  252. package/vendor/coze/source/form-extensions/components/tree-variable-selector/composite-select.tsx +265 -0
  253. package/vendor/coze/source/form-extensions/components/tree-variable-selector/context.tsx +42 -0
  254. package/vendor/coze/source/form-extensions/components/tree-variable-selector/expand-icon.tsx +30 -0
  255. package/vendor/coze/source/form-extensions/components/tree-variable-selector/index.module.less +292 -0
  256. package/vendor/coze/source/form-extensions/components/tree-variable-selector/node-variable-tree.module.less +49 -0
  257. package/vendor/coze/source/form-extensions/components/tree-variable-selector/node-variable-tree.tsx +149 -0
  258. package/vendor/coze/source/form-extensions/components/tree-variable-selector/utils.tsx +500 -0
  259. package/vendor/coze/source/form-extensions/components/tree-variable-selector/value-display.tsx +130 -0
  260. package/vendor/coze/source/form-extensions/components/value-expression-input/const.ts +68 -0
  261. package/vendor/coze/source/form-extensions/components/value-expression-input/context.ts +27 -0
  262. package/vendor/coze/source/form-extensions/components/value-expression-input/index.module.less +144 -0
  263. package/vendor/coze/source/form-extensions/components/value-expression-input/value-expression-input.tsx +418 -0
  264. package/vendor/coze/source/form-extensions/components/variable-type-selector/constants.tsx +77 -0
  265. package/vendor/coze/source/form-extensions/components/variable-type-selector/index.module.less +31 -0
  266. package/vendor/coze/source/form-extensions/components/variable-type-selector/index.tsx +17 -0
  267. package/vendor/coze/source/form-extensions/components/variable-type-selector/utils.tsx +298 -0
  268. package/vendor/coze/source/form-extensions/components/variable-type-selector/variable-type-selector.tsx +235 -0
  269. package/vendor/coze/source/form-extensions/components/variable-type-tag/index.tsx +54 -0
  270. package/vendor/coze/source/form-extensions/setters/condition/multi-condition/condition-branch.module.less +9 -0
  271. package/vendor/coze/source/form-extensions/setters/condition/multi-condition/condition-branch.tsx +249 -0
  272. package/vendor/coze/source/form-extensions/setters/condition/multi-condition/condition-header.tsx +50 -0
  273. package/vendor/coze/source/form-extensions/setters/condition/multi-condition/condition-item-logic.module.less +13 -0
  274. package/vendor/coze/source/form-extensions/setters/condition/multi-condition/condition-item-logic.tsx +73 -0
  275. package/vendor/coze/source/form-extensions/setters/condition/multi-condition/condition-params-item/delete/index.module.less +10 -0
  276. package/vendor/coze/source/form-extensions/setters/condition/multi-condition/condition-params-item/delete/index.tsx +42 -0
  277. package/vendor/coze/source/form-extensions/setters/condition/multi-condition/condition-params-item/index.module.less +9 -0
  278. package/vendor/coze/source/form-extensions/setters/condition/multi-condition/condition-params-item/index.tsx +254 -0
  279. package/vendor/coze/source/form-extensions/setters/condition/multi-condition/condition-params-item/operator/index.module.less +7 -0
  280. package/vendor/coze/source/form-extensions/setters/condition/multi-condition/condition-params-item/operator/index.tsx +144 -0
  281. package/vendor/coze/source/form-extensions/setters/condition/multi-condition/condition-params-item/value-expression-with-state/index.tsx +69 -0
  282. package/vendor/coze/source/form-extensions/setters/condition/multi-condition/context.ts +36 -0
  283. package/vendor/coze/source/form-extensions/setters/condition/multi-condition/draggable/condition-branch-preview.tsx +44 -0
  284. package/vendor/coze/source/form-extensions/setters/condition/multi-condition/draggable/condition-branch.tsx +152 -0
  285. package/vendor/coze/source/form-extensions/setters/condition/multi-condition/draggable/container.tsx +19 -0
  286. package/vendor/coze/source/form-extensions/setters/condition/multi-condition/draggable/custom-drag-layer.tsx +117 -0
  287. package/vendor/coze/source/form-extensions/setters/condition/multi-condition/draggable/types.ts +18 -0
  288. package/vendor/coze/source/form-extensions/setters/condition/multi-condition/types.ts +58 -0
  289. package/vendor/coze/source/node-registries/end/components/terminate-plan-field.tsx +29 -0
  290. package/vendor/coze/source/node-registries/end/constants.ts +34 -0
  291. package/vendor/coze/source/node-registries/end/form.tsx +66 -0
  292. package/vendor/coze/source/node-registries/end/types.ts +45 -0
  293. package/vendor/coze/source/node-registries/http/components/base-editor/raw-text-editor.tsx +80 -0
  294. package/vendor/coze/source/node-registries/http/constants.ts +80 -0
  295. package/vendor/coze/source/node-registries/http/fields/json-import-editor/index.module.less +191 -0
  296. package/vendor/coze/source/node-registries/http/fields/json-import-editor/json-import-components/json-expand-editor.tsx +141 -0
  297. package/vendor/coze/source/node-registries/http/fields/json-import-editor/json-import-components/json-import.tsx +99 -0
  298. package/vendor/coze/source/node-registries/http/form-render.tsx +102 -0
  299. package/vendor/coze/source/node-registries/http/setters/api/curl-expand-editor.tsx +161 -0
  300. package/vendor/coze/source/node-registries/http/setters/api/curl-import.tsx +96 -0
  301. package/vendor/coze/source/node-registries/http/setters/api/index.module.less +199 -0
  302. package/vendor/coze/source/node-registries/http/setters/api/index.tsx +149 -0
  303. package/vendor/coze/source/node-registries/http/setters/api/utils.ts +41 -0
  304. package/vendor/coze/source/node-registries/http/setters/body/index.tsx +201 -0
  305. package/vendor/coze/source/node-registries/http/setters/constants.ts +83 -0
  306. package/vendor/coze/source/node-registries/if/components/else/index.tsx +41 -0
  307. package/vendor/coze/source/node-registries/intent/components/intents/index.module.less +15 -0
  308. package/vendor/coze/source/node-registries/intent/components/intents/option-item/index.tsx +189 -0
  309. package/vendor/coze/source/node-registries/json-stringify/constants.ts +32 -0
  310. package/vendor/coze/source/node-registries/json-stringify/form.tsx +46 -0
  311. package/vendor/coze/source/node-registries/loop/constants.ts +43 -0
  312. package/vendor/coze/source/node-registries/loop/loop-fields/loop-settings-section/index.tsx +48 -0
  313. package/vendor/coze/source/node-registries/loop/loop-fields/loop-type/index.tsx +81 -0
  314. package/vendor/coze/source/node-registries/loop/loop-fields/loop-type/options.ts +34 -0
  315. package/vendor/coze/source/node-registries/start/form.tsx +209 -0
  316. package/vendor/coze/source/node-registries/text-process/components/method-selector/index.tsx +46 -0
  317. package/vendor/coze/source/node-registries/text-process/constants.ts +132 -0
  318. package/vendor/coze/source/nodes-v2/components/form-item-feedback/index.module.less +7 -0
  319. package/vendor/coze/source/nodes-v2/components/form-item-feedback/index.tsx +47 -0
  320. package/vendor/coze/source/nodes-v2/components/system-prompt/index.module.less +66 -0
  321. package/vendor/coze/source/nodes-v2/components/system-prompt/prompt-kit-bar.tsx +129 -0
  322. package/vendor/coze/source/nodes-v2/components/system-prompt/system-prompt-editor.tsx +110 -0
  323. package/vendor/coze/source/nodes-v2/llm/user-prompt/index.tsx +64 -0
  324. package/vendor/coze/source/prompt-kit/input-config-popover/index.tsx +80 -0
  325. package/vendor/coze/source/prompt-kit/input-slot-widget/index.css +34 -0
  326. package/vendor/coze/source/prompt-kit/input-slot-widget/index.ts +169 -0
  327. package/vendor/coze/source/prompt-kit/library-item.tsx +141 -0
  328. package/vendor/coze/source/prompt-kit/prompt-info-input.tsx +90 -0
  329. package/vendor/coze/source/ui-components/add-operation/index.module.less +19 -0
  330. package/vendor/coze/source/ui-components/add-operation/index.tsx +67 -0
  331. package/vendor/coze/source/ui-components/auto-size-tooltip/index.module.less +39 -0
  332. package/vendor/coze/source/ui-components/auto-size-tooltip/index.tsx +74 -0
  333. package/vendor/coze/source/ui-components/workflow-sl-input/index.module.less +36 -0
  334. package/vendor/coze/source/ui-components/workflow-sl-input/index.tsx +194 -0
  335. package/vendor/coze/source/utils/create-slots/index.tsx +126 -0
  336. 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
+ }