gitextract_ksplgn6_/ ├── .claude/ │ ├── commands/ │ │ └── add-tests.md │ └── skills/ │ ├── create-node/ │ │ ├── SKILL.md │ │ └── templates/ │ │ ├── README.md │ │ ├── complex-node/ │ │ │ ├── components/ │ │ │ │ └── custom-component.tsx │ │ │ ├── form-meta.tsx │ │ │ ├── index.tsx │ │ │ └── types.tsx │ │ └── simple-node/ │ │ └── index.ts │ ├── material-component-dev/ │ │ └── SKILL.md │ └── material-component-doc/ │ ├── SKILL.md │ └── templates/ │ └── material.mdx ├── .gitattributes ├── .github/ │ ├── CODEOWNERS │ ├── ISSUE_TEMPLATE/ │ │ ├── bug-report.md │ │ └── question.md │ └── workflows/ │ ├── ci.yml │ ├── common-pr-checks.yml │ ├── deploy.yml │ ├── e2e.yml │ ├── publish-alpha.yml │ ├── publish-app-to-version.yml │ ├── publish-app.yml │ ├── publish-minor.yml │ ├── publish-to-version.yml │ ├── publish.yml │ └── sync-screenshot.yml ├── .gitignore ├── .vscode/ │ ├── extentions.json │ └── settings.json ├── AGENTS.md ├── CHANGELOG.md ├── CLAUDE.md ├── CNAME ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── README_DE.md ├── README_ES.md ├── README_JA.md ├── README_PT.md ├── README_RU.md ├── README_ZH.md ├── apps/ │ ├── cli/ │ │ ├── .gitignore │ │ ├── bin/ │ │ │ └── index.js │ │ ├── eslint.config.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── create-app/ │ │ │ │ └── index.ts │ │ │ ├── find-materials/ │ │ │ │ └── index.ts │ │ │ ├── index.ts │ │ │ ├── materials/ │ │ │ │ ├── copy.ts │ │ │ │ ├── index.ts │ │ │ │ ├── material.ts │ │ │ │ ├── refresh-project-import.ts │ │ │ │ ├── select.ts │ │ │ │ └── types.ts │ │ │ ├── update-version/ │ │ │ │ └── index.ts │ │ │ └── utils/ │ │ │ ├── export.ts │ │ │ ├── file.ts │ │ │ ├── import.ts │ │ │ ├── npm.ts │ │ │ ├── project.ts │ │ │ └── ts-file.ts │ │ ├── tsconfig.json │ │ └── tsup.config.js │ ├── create-app/ │ │ ├── bin/ │ │ │ └── index.js │ │ ├── eslint.config.js │ │ ├── package.json │ │ ├── src/ │ │ │ └── index.ts │ │ └── tsconfig.json │ ├── demo-fixed-layout/ │ │ ├── README.md │ │ ├── README.zh_CN.md │ │ ├── eslint.config.js │ │ ├── index.html │ │ ├── package.json │ │ ├── rsbuild.config.ts │ │ ├── src/ │ │ │ ├── app.tsx │ │ │ ├── assets/ │ │ │ │ ├── icon-mouse.tsx │ │ │ │ └── icon-pad.tsx │ │ │ ├── components/ │ │ │ │ ├── agent-adder/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── agent-label/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── base-node/ │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── styles.tsx │ │ │ │ ├── branch-adder/ │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── styles.tsx │ │ │ │ ├── drag-node/ │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── styles.tsx │ │ │ │ ├── index.ts │ │ │ │ ├── node-adder/ │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── styles.tsx │ │ │ │ │ └── utils.ts │ │ │ │ ├── node-list.tsx │ │ │ │ ├── selector-box-popover/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── sidebar/ │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── sidebar-node-renderer.tsx │ │ │ │ │ └── sidebar-renderer.tsx │ │ │ │ └── tools/ │ │ │ │ ├── download.tsx │ │ │ │ ├── fit-view.tsx │ │ │ │ ├── index.tsx │ │ │ │ ├── interactive.tsx │ │ │ │ ├── minimap-switch.tsx │ │ │ │ ├── minimap.tsx │ │ │ │ ├── mouse-pad-selector.less │ │ │ │ ├── mouse-pad-selector.tsx │ │ │ │ ├── readonly.tsx │ │ │ │ ├── run.tsx │ │ │ │ ├── save.tsx │ │ │ │ ├── styles.tsx │ │ │ │ ├── switch-vertical.tsx │ │ │ │ └── zoom-select.tsx │ │ │ ├── context/ │ │ │ │ ├── index.ts │ │ │ │ ├── node-render-context.ts │ │ │ │ └── sidebar-context.ts │ │ │ ├── editor.tsx │ │ │ ├── form-components/ │ │ │ │ ├── feedback.tsx │ │ │ │ ├── form-content/ │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── styles.tsx │ │ │ │ ├── form-header/ │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── styles.tsx │ │ │ │ │ ├── title-input.tsx │ │ │ │ │ └── utils.tsx │ │ │ │ ├── form-inputs/ │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── styles.tsx │ │ │ │ ├── form-item/ │ │ │ │ │ ├── index.css │ │ │ │ │ └── index.tsx │ │ │ │ ├── form-outputs/ │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── styles.tsx │ │ │ │ ├── index.ts │ │ │ │ └── properties-edit/ │ │ │ │ ├── index.tsx │ │ │ │ ├── property-edit.tsx │ │ │ │ └── styles.tsx │ │ │ ├── hooks/ │ │ │ │ ├── index.ts │ │ │ │ ├── use-editor-props.ts │ │ │ │ ├── use-form-value.ts │ │ │ │ ├── use-is-sidebar.ts │ │ │ │ └── use-node-render-context.ts │ │ │ ├── index.ts │ │ │ ├── initial-data.ts │ │ │ ├── nodes/ │ │ │ │ ├── agent/ │ │ │ │ │ ├── agent-llm.ts │ │ │ │ │ ├── agent-memory.ts │ │ │ │ │ ├── agent-tools.ts │ │ │ │ │ ├── agent.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── memory.ts │ │ │ │ │ └── tool.ts │ │ │ │ ├── break-loop/ │ │ │ │ │ ├── form-meta.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── case/ │ │ │ │ │ ├── form-meta.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── case-default/ │ │ │ │ │ ├── form-meta.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── catch-block/ │ │ │ │ │ ├── form-meta.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── default-form-meta.tsx │ │ │ │ ├── end/ │ │ │ │ │ ├── form-meta.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── if/ │ │ │ │ │ └── index.ts │ │ │ │ ├── if-block/ │ │ │ │ │ ├── form-meta.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── index.ts │ │ │ │ ├── llm/ │ │ │ │ │ └── index.ts │ │ │ │ ├── loop/ │ │ │ │ │ ├── form-meta.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── start/ │ │ │ │ │ ├── form-meta.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── switch/ │ │ │ │ │ └── index.ts │ │ │ │ └── trycatch/ │ │ │ │ ├── form-meta.tsx │ │ │ │ └── index.ts │ │ │ ├── plugins/ │ │ │ │ ├── clipboard-plugin/ │ │ │ │ │ └── create-clipboard-plugin.ts │ │ │ │ ├── group-plugin/ │ │ │ │ │ ├── group-box-header.tsx │ │ │ │ │ ├── group-node.tsx │ │ │ │ │ ├── group-note.tsx │ │ │ │ │ ├── group-tools.tsx │ │ │ │ │ ├── icons/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── index.ts │ │ │ │ │ └── multilang-textarea-editor/ │ │ │ │ │ ├── base-textarea.tsx │ │ │ │ │ ├── index.css │ │ │ │ │ └── index.tsx │ │ │ │ ├── index.ts │ │ │ │ └── variable-panel-plugin/ │ │ │ │ ├── components/ │ │ │ │ │ ├── full-variable-list.tsx │ │ │ │ │ ├── global-variable-editor.tsx │ │ │ │ │ ├── index.module.less │ │ │ │ │ └── variable-panel.tsx │ │ │ │ ├── index.ts │ │ │ │ ├── variable-panel-layer.tsx │ │ │ │ └── variable-panel-plugin.ts │ │ │ ├── services/ │ │ │ │ ├── custom-service.ts │ │ │ │ └── index.ts │ │ │ ├── shortcuts/ │ │ │ │ ├── constants.ts │ │ │ │ ├── index.ts │ │ │ │ └── utils.ts │ │ │ ├── type.d.ts │ │ │ └── typings/ │ │ │ ├── index.ts │ │ │ ├── json-schema.ts │ │ │ └── node.ts │ │ └── tsconfig.json │ ├── demo-fixed-layout-animation/ │ │ ├── eslint.config.js │ │ ├── index.html │ │ ├── package.json │ │ ├── rsbuild.config.ts │ │ ├── src/ │ │ │ ├── app.tsx │ │ │ ├── components/ │ │ │ │ ├── form-render/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── loading-dots/ │ │ │ │ │ ├── index.less │ │ │ │ │ └── index.tsx │ │ │ │ ├── node-render/ │ │ │ │ │ ├── index.less │ │ │ │ │ └── index.tsx │ │ │ │ ├── thinking-node/ │ │ │ │ │ ├── index.less │ │ │ │ │ └── index.tsx │ │ │ │ ├── tools/ │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── minimap.tsx │ │ │ │ └── update-schema/ │ │ │ │ ├── example-schemas.ts │ │ │ │ ├── example.py │ │ │ │ ├── index.less │ │ │ │ └── index.tsx │ │ │ ├── fields/ │ │ │ │ ├── content-field/ │ │ │ │ │ ├── index.less │ │ │ │ │ └── index.tsx │ │ │ │ ├── thinking-text-field/ │ │ │ │ │ ├── index.less │ │ │ │ │ └── index.tsx │ │ │ │ └── title-field/ │ │ │ │ ├── index.less │ │ │ │ └── index.tsx │ │ │ ├── hooks/ │ │ │ │ ├── use-editor-props.tsx │ │ │ │ └── use-node-loading.tsx │ │ │ ├── nodes/ │ │ │ │ ├── condition/ │ │ │ │ │ └── index.ts │ │ │ │ ├── custom/ │ │ │ │ │ └── index.ts │ │ │ │ ├── index.ts │ │ │ │ └── thinking/ │ │ │ │ └── index.tsx │ │ │ └── services/ │ │ │ ├── index.ts │ │ │ └── load-schema-service/ │ │ │ ├── index.ts │ │ │ ├── type.ts │ │ │ └── utils.ts │ │ └── tsconfig.json │ ├── demo-fixed-layout-simple/ │ │ ├── eslint.config.js │ │ ├── index.html │ │ ├── package.json │ │ ├── rsbuild.config.ts │ │ ├── src/ │ │ │ ├── app.tsx │ │ │ ├── components/ │ │ │ │ ├── base-node.tsx │ │ │ │ ├── branch-adder.tsx │ │ │ │ ├── flow-select.tsx │ │ │ │ ├── minimap.tsx │ │ │ │ ├── node-add-panel.tsx │ │ │ │ ├── node-adder.tsx │ │ │ │ ├── slot-adder.tsx │ │ │ │ └── tools.tsx │ │ │ ├── data/ │ │ │ │ ├── condition.ts │ │ │ │ ├── dynamicSplit.ts │ │ │ │ ├── index.ts │ │ │ │ ├── loop.ts │ │ │ │ ├── mindmap.ts │ │ │ │ ├── multiInputs.ts │ │ │ │ ├── multiOutputs.ts │ │ │ │ ├── slot.ts │ │ │ │ └── tryCatch.ts │ │ │ ├── editor.tsx │ │ │ ├── hooks/ │ │ │ │ ├── use-add-node.tsx │ │ │ │ └── use-editor-props.tsx │ │ │ ├── index.css │ │ │ ├── index.ts │ │ │ ├── initial-data.ts │ │ │ └── node-registries.ts │ │ └── tsconfig.json │ ├── demo-free-layout/ │ │ ├── README.md │ │ ├── README.zh_CN.md │ │ ├── eslint.config.js │ │ ├── index.html │ │ ├── package.json │ │ ├── rsbuild.config.ts │ │ ├── src/ │ │ │ ├── app.tsx │ │ │ ├── assets/ │ │ │ │ ├── icon-auto-layout.tsx │ │ │ │ ├── icon-cancel.tsx │ │ │ │ ├── icon-comment.tsx │ │ │ │ ├── icon-minimap.tsx │ │ │ │ ├── icon-mouse.tsx │ │ │ │ ├── icon-pad.tsx │ │ │ │ ├── icon-success.tsx │ │ │ │ ├── icon-switch-line.tsx │ │ │ │ └── icon-warning.tsx │ │ │ ├── components/ │ │ │ │ ├── add-node/ │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── use-add-node.ts │ │ │ │ ├── base-node/ │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── node-wrapper.tsx │ │ │ │ │ ├── styles.tsx │ │ │ │ │ └── utils.ts │ │ │ │ ├── comment/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── blank-area.tsx │ │ │ │ │ │ ├── border-area.tsx │ │ │ │ │ │ ├── container.tsx │ │ │ │ │ │ ├── content-drag-area.tsx │ │ │ │ │ │ ├── drag-area.tsx │ │ │ │ │ │ ├── editor.tsx │ │ │ │ │ │ ├── index.css │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── more-button.tsx │ │ │ │ │ │ ├── render.tsx │ │ │ │ │ │ └── resize-area.tsx │ │ │ │ │ ├── constant.ts │ │ │ │ │ ├── hooks/ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── use-model.ts │ │ │ │ │ │ ├── use-overflow.ts │ │ │ │ │ │ ├── use-placeholder.ts │ │ │ │ │ │ └── use-size.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── model.ts │ │ │ │ │ └── type.ts │ │ │ │ ├── group/ │ │ │ │ │ ├── color.ts │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── background.tsx │ │ │ │ │ │ ├── color.tsx │ │ │ │ │ │ ├── header.tsx │ │ │ │ │ │ ├── icon-group.tsx │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── node-render.tsx │ │ │ │ │ │ ├── tips/ │ │ │ │ │ │ │ ├── global-store.ts │ │ │ │ │ │ │ ├── icon-close.tsx │ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ │ ├── is-mac-os.ts │ │ │ │ │ │ │ ├── style.ts │ │ │ │ │ │ │ └── use-control.ts │ │ │ │ │ │ ├── title.tsx │ │ │ │ │ │ ├── tools.tsx │ │ │ │ │ │ └── ungroup.tsx │ │ │ │ │ ├── constant.ts │ │ │ │ │ ├── index.css │ │ │ │ │ └── index.ts │ │ │ │ ├── index.ts │ │ │ │ ├── line-add-button/ │ │ │ │ │ ├── button.tsx │ │ │ │ │ ├── index.less │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── use-visible.ts │ │ │ │ ├── node-menu/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── node-panel/ │ │ │ │ │ ├── index.less │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── node-list.tsx │ │ │ │ │ └── node-placeholder.tsx │ │ │ │ ├── problem-panel/ │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── problem-panel.tsx │ │ │ │ │ └── use-watch-validate.ts │ │ │ │ ├── selector-box-popover/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── sidebar/ │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── node-form-panel.tsx │ │ │ │ │ └── sidebar-node-renderer.tsx │ │ │ │ ├── testrun/ │ │ │ │ │ ├── hooks/ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── use-fields.ts │ │ │ │ │ │ ├── use-form-meta.ts │ │ │ │ │ │ └── use-sync-default.ts │ │ │ │ │ ├── json-value-editor/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── node-status-bar/ │ │ │ │ │ │ ├── group/ │ │ │ │ │ │ │ ├── index.module.less │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── header/ │ │ │ │ │ │ │ ├── index.module.less │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ ├── render/ │ │ │ │ │ │ │ ├── index.module.less │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ └── viewer/ │ │ │ │ │ │ ├── index.module.less │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── testrun-button/ │ │ │ │ │ │ ├── index.module.less │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── testrun-form/ │ │ │ │ │ │ ├── index.module.less │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── type.ts │ │ │ │ │ ├── testrun-json-input/ │ │ │ │ │ │ ├── index.module.less │ │ │ │ │ │ └── index.tsx │ │ │ │ │ └── testrun-panel/ │ │ │ │ │ ├── index.module.less │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── test-run-panel.tsx │ │ │ │ └── tools/ │ │ │ │ ├── auto-layout.tsx │ │ │ │ ├── comment.tsx │ │ │ │ ├── download.tsx │ │ │ │ ├── fit-view.tsx │ │ │ │ ├── index.tsx │ │ │ │ ├── interactive.tsx │ │ │ │ ├── minimap-switch.tsx │ │ │ │ ├── minimap.tsx │ │ │ │ ├── mouse-pad-selector.less │ │ │ │ ├── mouse-pad-selector.tsx │ │ │ │ ├── readonly.tsx │ │ │ │ ├── save.tsx │ │ │ │ ├── styles.tsx │ │ │ │ ├── switch-line.tsx │ │ │ │ └── zoom-select.tsx │ │ │ ├── context/ │ │ │ │ ├── index.ts │ │ │ │ ├── node-render-context.ts │ │ │ │ └── sidebar-context.ts │ │ │ ├── editor.tsx │ │ │ ├── form-components/ │ │ │ │ ├── feedback.tsx │ │ │ │ ├── form-content/ │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── styles.tsx │ │ │ │ ├── form-header/ │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── styles.tsx │ │ │ │ │ ├── title-input.tsx │ │ │ │ │ └── utils.tsx │ │ │ │ ├── form-inputs/ │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── styles.tsx │ │ │ │ ├── form-item/ │ │ │ │ │ ├── index.css │ │ │ │ │ └── index.tsx │ │ │ │ └── index.ts │ │ │ ├── hooks/ │ │ │ │ ├── index.ts │ │ │ │ ├── use-editor-props.tsx │ │ │ │ ├── use-is-sidebar.ts │ │ │ │ ├── use-node-render-context.ts │ │ │ │ └── use-port-click.ts │ │ │ ├── index.ts │ │ │ ├── initial-data.ts │ │ │ ├── nodes/ │ │ │ │ ├── block-end/ │ │ │ │ │ ├── form-meta.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── block-start/ │ │ │ │ │ ├── form-meta.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── break/ │ │ │ │ │ ├── form-meta.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── code/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── code.tsx │ │ │ │ │ │ ├── inputs.tsx │ │ │ │ │ │ └── outputs.tsx │ │ │ │ │ ├── form-meta.tsx │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── types.tsx │ │ │ │ ├── comment/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── condition/ │ │ │ │ │ ├── condition-inputs/ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── styles.tsx │ │ │ │ │ ├── form-meta.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── constants.ts │ │ │ │ ├── continue/ │ │ │ │ │ ├── form-meta.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── default-form-meta.tsx │ │ │ │ ├── end/ │ │ │ │ │ ├── form-meta.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── group/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── http/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── api.tsx │ │ │ │ │ │ ├── body.tsx │ │ │ │ │ │ ├── headers.tsx │ │ │ │ │ │ ├── params.tsx │ │ │ │ │ │ └── timeout.tsx │ │ │ │ │ ├── form-meta.tsx │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── types.tsx │ │ │ │ ├── index.ts │ │ │ │ ├── llm/ │ │ │ │ │ └── index.ts │ │ │ │ ├── loop/ │ │ │ │ │ ├── form-meta.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── multi-condition/ │ │ │ │ │ ├── condition-inputs/ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── styles.tsx │ │ │ │ │ ├── form-meta.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── start/ │ │ │ │ │ ├── form-meta.tsx │ │ │ │ │ └── index.ts │ │ │ │ └── variable/ │ │ │ │ ├── form-meta.tsx │ │ │ │ ├── index.tsx │ │ │ │ └── types.tsx │ │ │ ├── plugins/ │ │ │ │ ├── context-menu-plugin/ │ │ │ │ │ ├── context-menu-layer.tsx │ │ │ │ │ ├── context-menu-plugin.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── index.ts │ │ │ │ ├── panel-manager-plugin/ │ │ │ │ │ ├── constants.ts │ │ │ │ │ ├── hooks.ts │ │ │ │ │ └── index.tsx │ │ │ │ ├── runtime-plugin/ │ │ │ │ │ ├── client/ │ │ │ │ │ │ ├── base-client.ts │ │ │ │ │ │ ├── browser-client/ │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── server-client/ │ │ │ │ │ │ ├── constant.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── type.ts │ │ │ │ │ ├── create-runtime-plugin.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── runtime-service/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ └── type.ts │ │ │ │ └── variable-panel-plugin/ │ │ │ │ ├── components/ │ │ │ │ │ ├── full-variable-list.tsx │ │ │ │ │ ├── global-variable-editor.tsx │ │ │ │ │ ├── index.module.less │ │ │ │ │ └── variable-panel.tsx │ │ │ │ ├── index.ts │ │ │ │ ├── variable-panel-layer.tsx │ │ │ │ └── variable-panel-plugin.ts │ │ │ ├── services/ │ │ │ │ ├── custom-service.ts │ │ │ │ ├── index.ts │ │ │ │ └── validate-service.ts │ │ │ ├── shortcuts/ │ │ │ │ ├── collapse/ │ │ │ │ │ └── index.ts │ │ │ │ ├── constants.ts │ │ │ │ ├── copy/ │ │ │ │ │ └── index.ts │ │ │ │ ├── delete/ │ │ │ │ │ └── index.ts │ │ │ │ ├── expand/ │ │ │ │ │ └── index.ts │ │ │ │ ├── index.ts │ │ │ │ ├── paste/ │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── traverse.ts │ │ │ │ │ └── unique-workflow.ts │ │ │ │ ├── select-all/ │ │ │ │ │ └── index.ts │ │ │ │ ├── shortcuts.ts │ │ │ │ ├── type.ts │ │ │ │ ├── zoom-in/ │ │ │ │ │ └── index.ts │ │ │ │ └── zoom-out/ │ │ │ │ └── index.ts │ │ │ ├── styles/ │ │ │ │ └── index.css │ │ │ ├── type.d.ts │ │ │ ├── typings/ │ │ │ │ ├── index.ts │ │ │ │ ├── json-schema.ts │ │ │ │ └── node.ts │ │ │ └── utils/ │ │ │ ├── can-contain-node.ts │ │ │ ├── index.ts │ │ │ ├── on-drag-line-end.ts │ │ │ └── toggle-loop-expanded.ts │ │ └── tsconfig.json │ ├── demo-free-layout-simple/ │ │ ├── eslint.config.js │ │ ├── index.html │ │ ├── package.json │ │ ├── rsbuild.config.ts │ │ ├── src/ │ │ │ ├── app.tsx │ │ │ ├── components/ │ │ │ │ ├── minimap.tsx │ │ │ │ ├── node-add-panel.tsx │ │ │ │ └── tools.tsx │ │ │ ├── editor.tsx │ │ │ ├── hooks/ │ │ │ │ └── use-editor-props.tsx │ │ │ ├── index.css │ │ │ ├── index.tsx │ │ │ ├── initial-data.ts │ │ │ └── nodes/ │ │ │ ├── batch/ │ │ │ │ └── index.ts │ │ │ ├── batch-function/ │ │ │ │ ├── create-batch-function-json.ts │ │ │ │ ├── create-batch-function-lines.ts │ │ │ │ ├── create-batch-function.ts │ │ │ │ ├── form-meta.tsx │ │ │ │ ├── index.ts │ │ │ │ ├── registry.ts │ │ │ │ └── relation.ts │ │ │ ├── block-end/ │ │ │ │ ├── form-meta.tsx │ │ │ │ └── index.ts │ │ │ ├── block-start/ │ │ │ │ ├── form-meta.tsx │ │ │ │ └── index.ts │ │ │ ├── chain/ │ │ │ │ └── index.ts │ │ │ ├── condition/ │ │ │ │ ├── form-meta.tsx │ │ │ │ └── index.ts │ │ │ ├── custom/ │ │ │ │ └── index.ts │ │ │ ├── end/ │ │ │ │ └── index.ts │ │ │ ├── index.ts │ │ │ ├── loop/ │ │ │ │ ├── form-meta.tsx │ │ │ │ └── index.ts │ │ │ ├── start/ │ │ │ │ └── index.ts │ │ │ ├── tool/ │ │ │ │ └── index.ts │ │ │ └── twoway/ │ │ │ └── index.ts │ │ └── tsconfig.json │ ├── demo-materials/ │ │ ├── .storybook/ │ │ │ └── main.ts │ │ ├── eslint.config.js │ │ ├── package.json │ │ ├── rsbuild.config.ts │ │ ├── src/ │ │ │ ├── assets/ │ │ │ │ ├── icon-auto-layout.tsx │ │ │ │ ├── icon-cancel.tsx │ │ │ │ ├── icon-comment.tsx │ │ │ │ ├── icon-minimap.tsx │ │ │ │ ├── icon-mouse.tsx │ │ │ │ ├── icon-pad.tsx │ │ │ │ ├── icon-success.tsx │ │ │ │ ├── icon-switch-line.tsx │ │ │ │ └── icon-warning.tsx │ │ │ ├── components/ │ │ │ │ ├── form-header/ │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── styles.tsx │ │ │ │ │ ├── title-input.tsx │ │ │ │ │ └── utils.tsx │ │ │ │ ├── free-editor/ │ │ │ │ │ ├── hooks/ │ │ │ │ │ │ └── use-editor-props.tsx │ │ │ │ │ ├── index.css │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── plugins/ │ │ │ │ │ └── debug-panel-plugin/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── debug-panel.tsx │ │ │ │ │ │ ├── full-variable-list.tsx │ │ │ │ │ │ └── workflow-json-editor.tsx │ │ │ │ │ ├── debug-panel-layer.tsx │ │ │ │ │ ├── debug-panel-plugin.ts │ │ │ │ │ └── index.ts │ │ │ │ └── free-form-meta-story-builder/ │ │ │ │ ├── constants.tsx │ │ │ │ ├── index.tsx │ │ │ │ ├── initial-data.tsx │ │ │ │ └── utils.tsx │ │ │ ├── index.tsx │ │ │ ├── stories/ │ │ │ │ ├── components/ │ │ │ │ │ ├── blur-input.stories.tsx │ │ │ │ │ ├── inputs-values-tree.stories.tsx │ │ │ │ │ ├── json-schema-creator.stories.tsx │ │ │ │ │ ├── sql-editor-with-variables.stories.tsx │ │ │ │ │ └── variable-selector.stories.tsx │ │ │ │ └── hello.stories.tsx │ │ │ └── type.d.ts │ │ └── tsconfig.json │ ├── demo-nextjs/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── eslint.config.js │ │ ├── next.config.ts │ │ ├── package.json │ │ ├── postcss.config.mjs │ │ ├── src/ │ │ │ ├── app/ │ │ │ │ ├── api/ │ │ │ │ │ └── runtime/ │ │ │ │ │ └── route.ts │ │ │ │ ├── globals.css │ │ │ │ ├── layout.tsx │ │ │ │ └── page.tsx │ │ │ ├── editor/ │ │ │ │ ├── components/ │ │ │ │ │ ├── editor-client.tsx │ │ │ │ │ ├── editor.tsx │ │ │ │ │ ├── form-render.tsx │ │ │ │ │ ├── node-render.tsx │ │ │ │ │ └── tools.tsx │ │ │ │ ├── data/ │ │ │ │ │ ├── initial-data.ts │ │ │ │ │ └── node-registries.ts │ │ │ │ ├── hooks/ │ │ │ │ │ ├── index.ts │ │ │ │ │ └── use-editor-props.tsx │ │ │ │ ├── index.ts │ │ │ │ └── style/ │ │ │ │ ├── index.css │ │ │ │ ├── theme.css │ │ │ │ └── var.css │ │ │ └── runtime/ │ │ │ ├── index.ts │ │ │ ├── main.ts │ │ │ └── models/ │ │ │ ├── index.ts │ │ │ └── runtime/ │ │ │ ├── index.ts │ │ │ ├── model.ts │ │ │ └── type.ts │ │ └── tsconfig.json │ ├── demo-nextjs-antd/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── eslint.config.js │ │ ├── next-env.d.ts │ │ ├── next.config.ts │ │ ├── package.json │ │ ├── postcss.config.mjs │ │ ├── src/ │ │ │ ├── app/ │ │ │ │ ├── globals.css │ │ │ │ ├── layout.tsx │ │ │ │ └── page.tsx │ │ │ └── editor/ │ │ │ ├── assets/ │ │ │ │ ├── icon-auto-layout.tsx │ │ │ │ ├── icon-comment.tsx │ │ │ │ ├── icon-minimap.tsx │ │ │ │ ├── icon-mouse.tsx │ │ │ │ ├── icon-pad.tsx │ │ │ │ └── icon-switch-line.tsx │ │ │ ├── components/ │ │ │ │ ├── base-node/ │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── node-wrapper.scss │ │ │ │ │ ├── node-wrapper.tsx │ │ │ │ │ ├── styles.tsx │ │ │ │ │ └── utils.ts │ │ │ │ ├── editor-client.tsx │ │ │ │ ├── editor.tsx │ │ │ │ ├── form-render.tsx │ │ │ │ ├── group/ │ │ │ │ │ ├── color.ts │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── background.tsx │ │ │ │ │ │ ├── color.tsx │ │ │ │ │ │ ├── header.tsx │ │ │ │ │ │ ├── icon-group.tsx │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── node-render.tsx │ │ │ │ │ │ ├── tips/ │ │ │ │ │ │ │ ├── global-store.ts │ │ │ │ │ │ │ ├── icon-close.tsx │ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ │ ├── is-mac-os.ts │ │ │ │ │ │ │ ├── style.ts │ │ │ │ │ │ │ └── use-control.ts │ │ │ │ │ │ ├── title.tsx │ │ │ │ │ │ ├── tools.tsx │ │ │ │ │ │ └── ungroup.tsx │ │ │ │ │ ├── constant.ts │ │ │ │ │ ├── index.css │ │ │ │ │ └── index.ts │ │ │ │ ├── index.ts │ │ │ │ ├── line-add-button/ │ │ │ │ │ ├── button.tsx │ │ │ │ │ ├── index.scss │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── use-visible.ts │ │ │ │ ├── node-comment/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── blank-area.tsx │ │ │ │ │ │ ├── border-area.tsx │ │ │ │ │ │ ├── container.tsx │ │ │ │ │ │ ├── content-drag-area.tsx │ │ │ │ │ │ ├── drag-area.tsx │ │ │ │ │ │ ├── editor.tsx │ │ │ │ │ │ ├── index.css │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── more-button.tsx │ │ │ │ │ │ ├── render.tsx │ │ │ │ │ │ └── resize-area.tsx │ │ │ │ │ ├── constant.ts │ │ │ │ │ ├── hooks/ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── use-model.ts │ │ │ │ │ │ ├── use-overflow.ts │ │ │ │ │ │ └── use-size.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── model.ts │ │ │ │ │ └── type.ts │ │ │ │ ├── node-menu/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── node-panel/ │ │ │ │ │ ├── index.scss │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── node-list.tsx │ │ │ │ │ └── node-placeholder.tsx │ │ │ │ ├── node-render.tsx │ │ │ │ ├── selector-box-popover/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── sidebar/ │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── sidebar-node-renderer.tsx │ │ │ │ │ ├── sidebar-provider.tsx │ │ │ │ │ └── sidebar-renderer.tsx │ │ │ │ └── tools.tsx │ │ │ ├── context/ │ │ │ │ ├── index.ts │ │ │ │ ├── node-render-context.ts │ │ │ │ └── sidebar-context.ts │ │ │ ├── data/ │ │ │ │ ├── initial-data.ts │ │ │ │ └── node-registries.ts │ │ │ ├── form-components/ │ │ │ │ ├── feedback.tsx │ │ │ │ ├── form-content/ │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── styles.tsx │ │ │ │ ├── form-header/ │ │ │ │ │ ├── index.scss │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── styles.tsx │ │ │ │ │ ├── title-input.tsx │ │ │ │ │ └── utils.tsx │ │ │ │ ├── form-inputs/ │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── styles.tsx │ │ │ │ ├── form-item/ │ │ │ │ │ ├── index.css │ │ │ │ │ └── index.tsx │ │ │ │ ├── form-outputs/ │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── styles.tsx │ │ │ │ ├── index.ts │ │ │ │ ├── properties-edit/ │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── property-edit.tsx │ │ │ │ │ └── styles.tsx │ │ │ │ ├── type-tag.tsx │ │ │ │ └── value-display/ │ │ │ │ ├── index.tsx │ │ │ │ └── styles.tsx │ │ │ ├── hooks/ │ │ │ │ ├── index.ts │ │ │ │ ├── use-editor-props.tsx │ │ │ │ ├── use-is-sidebar.ts │ │ │ │ └── use-node-render-context.ts │ │ │ ├── index.ts │ │ │ ├── nodes/ │ │ │ │ ├── comment/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── condition/ │ │ │ │ │ ├── condition-inputs/ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── styles.tsx │ │ │ │ │ ├── form-meta.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── constants.ts │ │ │ │ ├── default-form-meta.tsx │ │ │ │ ├── end/ │ │ │ │ │ ├── form-meta.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── index.ts │ │ │ │ ├── llm/ │ │ │ │ │ └── index.ts │ │ │ │ ├── loop/ │ │ │ │ │ ├── index.ts │ │ │ │ │ └── loop-form-render.tsx │ │ │ │ └── start/ │ │ │ │ ├── form-meta.tsx │ │ │ │ └── index.ts │ │ │ ├── plugins/ │ │ │ │ ├── context-menu-plugin/ │ │ │ │ │ ├── context-menu-layer.tsx │ │ │ │ │ ├── context-menu-plugin.ts │ │ │ │ │ └── index.ts │ │ │ │ └── index.ts │ │ │ ├── shortcuts/ │ │ │ │ ├── collapse/ │ │ │ │ │ └── index.ts │ │ │ │ ├── constants.ts │ │ │ │ ├── copy/ │ │ │ │ │ └── index.ts │ │ │ │ ├── delete/ │ │ │ │ │ └── index.ts │ │ │ │ ├── expand/ │ │ │ │ │ └── index.ts │ │ │ │ ├── index.ts │ │ │ │ ├── paste/ │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── traverse.ts │ │ │ │ │ └── unique-workflow.ts │ │ │ │ ├── select-all/ │ │ │ │ │ └── index.ts │ │ │ │ ├── shortcuts.ts │ │ │ │ ├── type.ts │ │ │ │ ├── zoom-in/ │ │ │ │ │ └── index.ts │ │ │ │ └── zoom-out/ │ │ │ │ └── index.ts │ │ │ ├── style/ │ │ │ │ ├── index.css │ │ │ │ └── var.css │ │ │ ├── typings/ │ │ │ │ ├── flow-value/ │ │ │ │ │ ├── config.json │ │ │ │ │ └── index.ts │ │ │ │ ├── index.ts │ │ │ │ ├── json-schema/ │ │ │ │ │ ├── config.json │ │ │ │ │ └── index.ts │ │ │ │ └── node.ts │ │ │ └── utils/ │ │ │ ├── index.ts │ │ │ └── on-drag-line-end.ts │ │ └── tsconfig.json │ ├── demo-node-form/ │ │ ├── eslint.config.js │ │ ├── index.html │ │ ├── package.json │ │ ├── rsbuild.config.ts │ │ ├── src/ │ │ │ ├── app.tsx │ │ │ ├── components/ │ │ │ │ ├── field-title.tsx │ │ │ │ ├── field-wrapper.css │ │ │ │ ├── field-wrapper.tsx │ │ │ │ └── index.ts │ │ │ ├── constant.ts │ │ │ ├── editor.tsx │ │ │ ├── form-meta.tsx │ │ │ ├── hooks/ │ │ │ │ └── use-editor-props.tsx │ │ │ ├── index.css │ │ │ ├── index.tsx │ │ │ ├── initial-data.ts │ │ │ └── node-registries.tsx │ │ └── tsconfig.json │ ├── demo-playground/ │ │ ├── eslint.config.js │ │ ├── index.html │ │ ├── package.json │ │ ├── rsbuild.config.ts │ │ ├── src/ │ │ │ ├── app.tsx │ │ │ ├── components/ │ │ │ │ ├── card.tsx │ │ │ │ └── playground-tools.tsx │ │ │ ├── editor.tsx │ │ │ └── index.tsx │ │ └── tsconfig.json │ ├── demo-react-16/ │ │ ├── eslint.config.js │ │ ├── index.html │ │ ├── package.json │ │ ├── rsbuild.config.ts │ │ ├── src/ │ │ │ ├── app.tsx │ │ │ ├── components/ │ │ │ │ ├── minimap.tsx │ │ │ │ ├── node-add-panel.tsx │ │ │ │ ├── node-form-panel/ │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── sidebar-renderer.tsx │ │ │ │ └── tools.tsx │ │ │ ├── editor.tsx │ │ │ ├── hooks/ │ │ │ │ └── use-editor-props.tsx │ │ │ ├── index.css │ │ │ ├── index.tsx │ │ │ ├── initial-data.ts │ │ │ └── node-registries.ts │ │ └── tsconfig.json │ ├── demo-vite/ │ │ ├── eslint.config.js │ │ ├── index.html │ │ ├── package.json │ │ ├── src/ │ │ │ ├── app.tsx │ │ │ ├── components/ │ │ │ │ ├── minimap.tsx │ │ │ │ ├── node-add-panel.tsx │ │ │ │ └── tools.tsx │ │ │ ├── editor.tsx │ │ │ ├── hooks/ │ │ │ │ └── use-editor-props.tsx │ │ │ ├── index.css │ │ │ ├── index.tsx │ │ │ ├── initial-data.ts │ │ │ └── node-registries.ts │ │ ├── tsconfig.json │ │ └── vite.config.js │ └── docs/ │ ├── .gitignore │ ├── README.md │ ├── components/ │ │ ├── code-preview/ │ │ │ └── index.tsx │ │ ├── fixed-examples/ │ │ │ ├── step-1.tsx │ │ │ ├── step-2.tsx │ │ │ ├── step-3.tsx │ │ │ ├── step-4.tsx │ │ │ ├── step-5/ │ │ │ │ ├── adder.tsx │ │ │ │ ├── app.tsx │ │ │ │ ├── initial-data.ts │ │ │ │ ├── node-registries.tsx │ │ │ │ ├── node-render.tsx │ │ │ │ └── use-editor-props.tsx │ │ │ ├── step-6/ │ │ │ │ ├── adder.tsx │ │ │ │ ├── app.tsx │ │ │ │ ├── initial-data.ts │ │ │ │ ├── node-registries.tsx │ │ │ │ ├── node-render.tsx │ │ │ │ └── use-editor-props.tsx │ │ │ └── step-7/ │ │ │ ├── adder.tsx │ │ │ ├── app.tsx │ │ │ ├── initial-data.ts │ │ │ ├── minimap.tsx │ │ │ ├── node-registries.tsx │ │ │ ├── node-render.tsx │ │ │ ├── tools.tsx │ │ │ └── use-editor-props.tsx │ │ ├── fixed-feature-overview/ │ │ │ ├── index.less │ │ │ └── index.tsx │ │ ├── fixed-layout-simple/ │ │ │ ├── composite-nodes-preview.tsx │ │ │ ├── fixed-layout-simple.tsx │ │ │ ├── index.tsx │ │ │ └── preview.tsx │ │ ├── form-materials/ │ │ │ ├── common/ │ │ │ │ ├── disable-declaration-plugin.tsx │ │ │ │ ├── json-schema-preset.css │ │ │ │ └── json-schema-preset.tsx │ │ │ ├── components/ │ │ │ │ ├── assign-row.tsx │ │ │ │ ├── assign-rows.tsx │ │ │ │ ├── batch-outputs.tsx │ │ │ │ ├── batch-variable-selector.tsx │ │ │ │ ├── blur-input.tsx │ │ │ │ ├── code-editor.tsx │ │ │ │ ├── condition-context.tsx │ │ │ │ ├── condition-row.tsx │ │ │ │ ├── constant-inputs.tsx │ │ │ │ ├── db-condition-row.tsx │ │ │ │ ├── display-flow-value.tsx │ │ │ │ ├── display-inputs-values.tsx │ │ │ │ ├── display-outputs.tsx │ │ │ │ ├── display-schema-tag.tsx │ │ │ │ ├── display-schema-tree.tsx │ │ │ │ ├── dynamic-value-input.tsx │ │ │ │ ├── inputs-values-tree.tsx │ │ │ │ ├── inputs-values.tsx │ │ │ │ ├── json-editor-with-variables.tsx │ │ │ │ ├── json-schema-creator.tsx │ │ │ │ ├── json-schema-editor.tsx │ │ │ │ ├── prompt-editor-with-inputs.tsx │ │ │ │ ├── prompt-editor-with-variables.tsx │ │ │ │ ├── prompt-editor.tsx │ │ │ │ ├── sql-editor-with-variables.tsx │ │ │ │ ├── type-selector.tsx │ │ │ │ └── variable-selector.tsx │ │ │ ├── effects/ │ │ │ │ ├── auto-rename-ref.tsx │ │ │ │ ├── listen-ref-schema-change.tsx │ │ │ │ ├── listen-ref-value-change.tsx │ │ │ │ ├── provide-batch-input.tsx │ │ │ │ ├── provide-json-schema-output.tsx │ │ │ │ ├── sync-variable-title.tsx │ │ │ │ └── validate-when-variable-sync.tsx │ │ │ ├── form-plugins/ │ │ │ │ ├── batch-outputs-plugin.tsx │ │ │ │ ├── infer-assign-plugin.tsx │ │ │ │ └── infer-inputs-plugin.tsx │ │ │ └── validate/ │ │ │ └── validate-flow-value.tsx │ │ ├── free-examples/ │ │ │ ├── step-1.tsx │ │ │ ├── step-2.tsx │ │ │ ├── step-3.tsx │ │ │ ├── step-4.tsx │ │ │ ├── step-5/ │ │ │ │ ├── app.tsx │ │ │ │ ├── initial-data.ts │ │ │ │ ├── node-registries.tsx │ │ │ │ ├── node-render.tsx │ │ │ │ └── use-editor-props.tsx │ │ │ ├── step-6/ │ │ │ │ ├── app.tsx │ │ │ │ ├── initial-data.ts │ │ │ │ ├── node-registries.tsx │ │ │ │ ├── node-render.tsx │ │ │ │ └── use-editor-props.tsx │ │ │ └── step-7/ │ │ │ ├── add-node.tsx │ │ │ ├── app.tsx │ │ │ ├── initial-data.ts │ │ │ ├── minimap.tsx │ │ │ ├── node-registries.tsx │ │ │ ├── node-render.tsx │ │ │ ├── tools.tsx │ │ │ └── use-editor-props.tsx │ │ ├── free-feature-overview/ │ │ │ ├── index.less │ │ │ └── index.tsx │ │ ├── free-form-meta-story-builder/ │ │ │ └── index.tsx │ │ ├── free-layout-simple/ │ │ │ ├── index.less │ │ │ ├── index.tsx │ │ │ └── preview.tsx │ │ ├── index.ts │ │ ├── infinite-canvas/ │ │ │ ├── index.less │ │ │ ├── index.tsx │ │ │ ├── infinite-canvas.tsx │ │ │ └── preview.tsx │ │ ├── materials.tsx │ │ ├── node-form/ │ │ │ ├── array/ │ │ │ │ ├── index.css │ │ │ │ ├── node-registry.tsx │ │ │ │ └── preview.tsx │ │ │ ├── basic-preview.tsx │ │ │ ├── dynamic/ │ │ │ │ ├── node-registry.tsx │ │ │ │ └── preview.tsx │ │ │ ├── editor.tsx │ │ │ ├── effect/ │ │ │ │ ├── node-registry.tsx │ │ │ │ └── preview.tsx │ │ │ ├── index.css │ │ │ └── index.ts │ │ ├── preview-editor.tsx │ │ └── tsx-editor.tsx │ ├── eslint.config.js │ ├── global.less │ ├── package.json │ ├── rspress.config.ts │ ├── scripts/ │ │ ├── auto-generate.ts │ │ ├── constants.ts │ │ └── patch.ts │ ├── src/ │ │ ├── en/ │ │ │ ├── _nav.json │ │ │ ├── api/ │ │ │ │ ├── _meta.json │ │ │ │ ├── common-apis.mdx │ │ │ │ ├── components/ │ │ │ │ │ ├── editor-renderer.mdx │ │ │ │ │ ├── fixed-layout-editor-provider.mdx │ │ │ │ │ ├── fixed-layout-editor.mdx │ │ │ │ │ ├── free-layout-editor-provider.mdx │ │ │ │ │ ├── free-layout-editor.mdx │ │ │ │ │ └── workflow-node-renderer.mdx │ │ │ │ ├── core/ │ │ │ │ │ ├── _meta.json │ │ │ │ │ ├── flow-document.mdx │ │ │ │ │ ├── flow-node-entity.mdx │ │ │ │ │ ├── playground.mdx │ │ │ │ │ ├── workflow-document.mdx │ │ │ │ │ ├── workflow-line-entity.mdx │ │ │ │ │ └── workflow-lines-manager.mdx │ │ │ │ ├── hooks/ │ │ │ │ │ ├── use-client-context.mdx │ │ │ │ │ ├── use-node-render.mdx │ │ │ │ │ ├── use-playground-tools.mdx │ │ │ │ │ ├── use-refresh.mdx │ │ │ │ │ └── use-service.mdx │ │ │ │ ├── index.mdx │ │ │ │ ├── plugins.mdx │ │ │ │ ├── services/ │ │ │ │ │ ├── clipboard-service.mdx │ │ │ │ │ ├── command-service.mdx │ │ │ │ │ ├── flow-operation-service.mdx │ │ │ │ │ ├── history-service.mdx │ │ │ │ │ └── selection-service.mdx │ │ │ │ └── utils/ │ │ │ │ ├── disposable-collection.mdx │ │ │ │ ├── disposable.mdx │ │ │ │ ├── emitter.mdx │ │ │ │ └── get-node-form.mdx │ │ │ ├── examples/ │ │ │ │ ├── _meta.json │ │ │ │ ├── fixed-layout/ │ │ │ │ │ ├── _meta.json │ │ │ │ │ ├── fixed-composite-nodes.mdx │ │ │ │ │ ├── fixed-feature-overview.mdx │ │ │ │ │ └── fixed-layout-simple.mdx │ │ │ │ ├── free-layout/ │ │ │ │ │ ├── _meta.json │ │ │ │ │ ├── free-feature-overview.mdx │ │ │ │ │ └── free-layout-simple.mdx │ │ │ │ ├── index.mdx │ │ │ │ ├── node-form/ │ │ │ │ │ ├── _meta.json │ │ │ │ │ ├── array.mdx │ │ │ │ │ ├── basic.mdx │ │ │ │ │ ├── dynamic.mdx │ │ │ │ │ └── effect.mdx │ │ │ │ └── playground.mdx │ │ │ ├── guide/ │ │ │ │ ├── _meta.json │ │ │ │ ├── advanced/ │ │ │ │ │ ├── _meta.json │ │ │ │ │ ├── custom-layer.mdx │ │ │ │ │ ├── custom-plugin.mdx │ │ │ │ │ ├── custom-service.mdx │ │ │ │ │ ├── history.mdx │ │ │ │ │ ├── lines.mdx │ │ │ │ │ ├── shortcuts.mdx │ │ │ │ │ └── zoom-scroll.mdx │ │ │ │ ├── concepts/ │ │ │ │ │ ├── _meta.json │ │ │ │ │ ├── canvas-engine.mdx │ │ │ │ │ ├── ecs.mdx │ │ │ │ │ ├── index.mdx │ │ │ │ │ ├── ioc.mdx │ │ │ │ │ ├── node-engine.mdx │ │ │ │ │ └── reactflow.mdx │ │ │ │ ├── contact-us.mdx │ │ │ │ ├── contributing.mdx │ │ │ │ ├── fixed-layout/ │ │ │ │ │ ├── _meta.json │ │ │ │ │ ├── composite-nodes.mdx │ │ │ │ │ ├── load.mdx │ │ │ │ │ └── node.mdx │ │ │ │ ├── form/ │ │ │ │ │ ├── _meta.json │ │ │ │ │ ├── form-materials.mdx │ │ │ │ │ ├── form.mdx │ │ │ │ │ └── without-form.mdx │ │ │ │ ├── free-layout/ │ │ │ │ │ ├── _meta.json │ │ │ │ │ ├── line.mdx │ │ │ │ │ ├── load.mdx │ │ │ │ │ ├── node.mdx │ │ │ │ │ ├── port.mdx │ │ │ │ │ └── sub-canvas.mdx │ │ │ │ ├── getting-started/ │ │ │ │ │ ├── _meta.json │ │ │ │ │ ├── fixed-layout.mdx │ │ │ │ │ ├── free-layout.mdx │ │ │ │ │ ├── introduction.mdx │ │ │ │ │ └── quick-start.mdx │ │ │ │ ├── plugin/ │ │ │ │ │ ├── _meta.json │ │ │ │ │ ├── background-plugin.mdx │ │ │ │ │ ├── export-plugin.mdx │ │ │ │ │ ├── free-auto-layout-plugin.mdx │ │ │ │ │ ├── free-stack-plugin.mdx │ │ │ │ │ ├── minimap-plugin.mdx │ │ │ │ │ └── panel-manager-plugin.mdx │ │ │ │ ├── runtime/ │ │ │ │ │ ├── _meta.json │ │ │ │ │ ├── api.mdx │ │ │ │ │ ├── introduction.mdx │ │ │ │ │ ├── node.mdx │ │ │ │ │ ├── quick-start.mdx │ │ │ │ │ ├── schema.mdx │ │ │ │ │ └── source-code-guide.mdx │ │ │ │ └── variable/ │ │ │ │ ├── _meta.json │ │ │ │ ├── basic.mdx │ │ │ │ ├── concept.mdx │ │ │ │ ├── custom-scope-chain.mdx │ │ │ │ ├── variable-consume.mdx │ │ │ │ └── variable-output.mdx │ │ │ ├── index.md │ │ │ └── materials/ │ │ │ ├── _meta.json │ │ │ ├── cli.mdx │ │ │ ├── common/ │ │ │ │ ├── _meta.json │ │ │ │ ├── disable-declaration-plugin.mdx │ │ │ │ ├── flow-value.mdx │ │ │ │ ├── inject-material.mdx │ │ │ │ └── json-schema-preset.mdx │ │ │ ├── components/ │ │ │ │ ├── _meta.json │ │ │ │ ├── assign-row.mdx │ │ │ │ ├── assign-rows.mdx │ │ │ │ ├── batch-outputs.mdx │ │ │ │ ├── batch-variable-selector.mdx │ │ │ │ ├── blur-input.mdx │ │ │ │ ├── code-editor.mdx │ │ │ │ ├── condition-context.mdx │ │ │ │ ├── condition-row.mdx │ │ │ │ ├── constant-input.mdx │ │ │ │ ├── coze-editor-extensions.mdx │ │ │ │ ├── db-condition-row.mdx │ │ │ │ ├── display-flow-value.mdx │ │ │ │ ├── display-inputs-values.mdx │ │ │ │ ├── display-outputs.mdx │ │ │ │ ├── display-schema-tag.mdx │ │ │ │ ├── display-schema-tree.mdx │ │ │ │ ├── dynamic-value-input.mdx │ │ │ │ ├── inputs-values-tree.mdx │ │ │ │ ├── inputs-values.mdx │ │ │ │ ├── json-editor-with-variables.mdx │ │ │ │ ├── json-schema-creator.mdx │ │ │ │ ├── json-schema-editor.mdx │ │ │ │ ├── prompt-editor-with-inputs.mdx │ │ │ │ ├── prompt-editor-with-variables.mdx │ │ │ │ ├── prompt-editor.mdx │ │ │ │ ├── sql-editor-with-variables.mdx │ │ │ │ ├── type-selector.mdx │ │ │ │ └── variable-selector.mdx │ │ │ ├── effects/ │ │ │ │ ├── _meta.json │ │ │ │ ├── auto-rename-ref.mdx │ │ │ │ ├── listen-ref-schema-change.mdx │ │ │ │ ├── listen-ref-value-change.mdx │ │ │ │ ├── provide-batch-input.mdx │ │ │ │ ├── provide-json-schema-outputs.mdx │ │ │ │ ├── sync-variable-title.mdx │ │ │ │ └── validate-when-variable-sync.mdx │ │ │ ├── form-plugins/ │ │ │ │ ├── _meta.json │ │ │ │ ├── batch-outputs-plugin.mdx │ │ │ │ ├── infer-assign-plugin.mdx │ │ │ │ └── infer-inputs-plugin.mdx │ │ │ ├── introduction.mdx │ │ │ └── validate/ │ │ │ ├── _meta.json │ │ │ └── validate-flow-value.mdx │ │ ├── global.d.ts │ │ └── zh/ │ │ ├── _nav.json │ │ ├── api/ │ │ │ ├── _meta.json │ │ │ ├── common-apis.mdx │ │ │ ├── components/ │ │ │ │ ├── editor-renderer.mdx │ │ │ │ ├── fixed-layout-editor-provider.mdx │ │ │ │ ├── fixed-layout-editor.mdx │ │ │ │ ├── free-layout-editor-provider.mdx │ │ │ │ ├── free-layout-editor.mdx │ │ │ │ └── workflow-node-renderer.mdx │ │ │ ├── core/ │ │ │ │ ├── _meta.json │ │ │ │ ├── flow-document.mdx │ │ │ │ ├── flow-node-entity.mdx │ │ │ │ ├── playground.mdx │ │ │ │ ├── workflow-document.mdx │ │ │ │ ├── workflow-line-entity.mdx │ │ │ │ └── workflow-lines-manager.mdx │ │ │ ├── hooks/ │ │ │ │ ├── use-client-context.mdx │ │ │ │ ├── use-node-render.mdx │ │ │ │ ├── use-playground-tools.mdx │ │ │ │ ├── use-refresh.mdx │ │ │ │ └── use-service.mdx │ │ │ ├── index.mdx │ │ │ ├── plugins.mdx │ │ │ ├── services/ │ │ │ │ ├── clipboard-service.mdx │ │ │ │ ├── command-service.mdx │ │ │ │ ├── flow-operation-service.mdx │ │ │ │ ├── history-service.mdx │ │ │ │ └── selection-service.mdx │ │ │ └── utils/ │ │ │ ├── disposable-collection.mdx │ │ │ ├── disposable.mdx │ │ │ ├── emitter.mdx │ │ │ └── get-node-form.mdx │ │ ├── examples/ │ │ │ ├── _meta.json │ │ │ ├── fixed-layout/ │ │ │ │ ├── _meta.json │ │ │ │ ├── fixed-composite-nodes.mdx │ │ │ │ ├── fixed-feature-overview.mdx │ │ │ │ └── fixed-layout-simple.mdx │ │ │ ├── free-layout/ │ │ │ │ ├── _meta.json │ │ │ │ ├── free-feature-overview.mdx │ │ │ │ └── free-layout-simple.mdx │ │ │ ├── index.mdx │ │ │ ├── node-form/ │ │ │ │ ├── _meta.json │ │ │ │ ├── array.mdx │ │ │ │ ├── basic.mdx │ │ │ │ ├── dynamic.mdx │ │ │ │ └── effect.mdx │ │ │ └── playground.mdx │ │ ├── guide/ │ │ │ ├── _meta.json │ │ │ ├── advanced/ │ │ │ │ ├── _meta.json │ │ │ │ ├── custom-layer.mdx │ │ │ │ ├── custom-plugin.mdx │ │ │ │ ├── custom-service.mdx │ │ │ │ ├── history.mdx │ │ │ │ ├── shortcuts.mdx │ │ │ │ └── zoom-scroll.mdx │ │ │ ├── concepts/ │ │ │ │ ├── _meta.json │ │ │ │ ├── canvas-engine.mdx │ │ │ │ ├── ecs.mdx │ │ │ │ ├── index.mdx │ │ │ │ ├── ioc.mdx │ │ │ │ ├── node-engine.mdx │ │ │ │ └── reactflow.mdx │ │ │ ├── contact-us.mdx │ │ │ ├── contributing.mdx │ │ │ ├── fixed-layout/ │ │ │ │ ├── _meta.json │ │ │ │ ├── composite-nodes.mdx │ │ │ │ ├── load.mdx │ │ │ │ └── node.mdx │ │ │ ├── form/ │ │ │ │ ├── _meta.json │ │ │ │ ├── form-materials.mdx │ │ │ │ ├── form.mdx │ │ │ │ └── without-form.mdx │ │ │ ├── free-layout/ │ │ │ │ ├── _meta.json │ │ │ │ ├── line.mdx │ │ │ │ ├── load.mdx │ │ │ │ ├── node.mdx │ │ │ │ ├── port.mdx │ │ │ │ └── sub-canvas.mdx │ │ │ ├── getting-started/ │ │ │ │ ├── _meta.json │ │ │ │ ├── fixed-layout.mdx │ │ │ │ ├── free-layout.mdx │ │ │ │ ├── introduction.mdx │ │ │ │ └── quick-start.mdx │ │ │ ├── plugin/ │ │ │ │ ├── _meta.json │ │ │ │ ├── background-plugin.mdx │ │ │ │ ├── export-plugin.mdx │ │ │ │ ├── free-auto-layout-plugin.mdx │ │ │ │ ├── free-stack-plugin.mdx │ │ │ │ ├── minimap-plugin.mdx │ │ │ │ └── panel-manager-plugin.mdx │ │ │ ├── question.mdx │ │ │ ├── runtime/ │ │ │ │ ├── _meta.json │ │ │ │ ├── api.mdx │ │ │ │ ├── introduction.mdx │ │ │ │ ├── node.mdx │ │ │ │ ├── quick-start.mdx │ │ │ │ ├── schema.mdx │ │ │ │ └── source-code-guide.mdx │ │ │ └── variable/ │ │ │ ├── _meta.json │ │ │ ├── basic.mdx │ │ │ ├── cases/ │ │ │ │ ├── _meta.json │ │ │ │ └── case-batch-variable.mdx │ │ │ ├── concept.mdx │ │ │ ├── core-api.mdx │ │ │ ├── core-ast.mdx │ │ │ ├── custom-scope-chain.mdx │ │ │ ├── variable-consume.mdx │ │ │ └── variable-output.mdx │ │ ├── index.md │ │ └── materials/ │ │ ├── _meta.json │ │ ├── cli.mdx │ │ ├── common/ │ │ │ ├── _meta.json │ │ │ ├── disable-declaration-plugin.mdx │ │ │ ├── flow-value.mdx │ │ │ ├── inject-material.mdx │ │ │ └── json-schema-preset.mdx │ │ ├── components/ │ │ │ ├── _meta.json │ │ │ ├── assign-row.mdx │ │ │ ├── assign-rows.mdx │ │ │ ├── batch-outputs.mdx │ │ │ ├── batch-variable-selector.mdx │ │ │ ├── blur-input.mdx │ │ │ ├── code-editor.mdx │ │ │ ├── condition-context.mdx │ │ │ ├── condition-row.mdx │ │ │ ├── constant-input.mdx │ │ │ ├── coze-editor-extensions.mdx │ │ │ ├── db-condition-row.mdx │ │ │ ├── display-flow-value.mdx │ │ │ ├── display-inputs-values.mdx │ │ │ ├── display-outputs.mdx │ │ │ ├── display-schema-tag.mdx │ │ │ ├── display-schema-tree.mdx │ │ │ ├── dynamic-value-input.mdx │ │ │ ├── inputs-values-tree.mdx │ │ │ ├── inputs-values.mdx │ │ │ ├── json-editor-with-variables.mdx │ │ │ ├── json-schema-creator.mdx │ │ │ ├── json-schema-editor.mdx │ │ │ ├── prompt-editor-with-inputs.mdx │ │ │ ├── prompt-editor-with-variables.mdx │ │ │ ├── prompt-editor.mdx │ │ │ ├── sql-editor-with-variables.mdx │ │ │ ├── type-selector.mdx │ │ │ └── variable-selector.mdx │ │ ├── effects/ │ │ │ ├── _meta.json │ │ │ ├── auto-rename-ref.mdx │ │ │ ├── listen-ref-schema-change.mdx │ │ │ ├── listen-ref-value-change.mdx │ │ │ ├── provide-batch-input.mdx │ │ │ ├── provide-json-schema-outputs.mdx │ │ │ ├── sync-variable-title.mdx │ │ │ └── validate-when-variable-sync.mdx │ │ ├── form-plugins/ │ │ │ ├── _meta.json │ │ │ ├── batch-outputs-plugin.mdx │ │ │ ├── infer-assign-plugin.mdx │ │ │ └── infer-inputs-plugin.mdx │ │ ├── introduction.mdx │ │ └── validate/ │ │ ├── _meta.json │ │ └── validate-flow-value.mdx │ ├── theme/ │ │ ├── components/ │ │ │ ├── background/ │ │ │ │ ├── index.css │ │ │ │ └── index.tsx │ │ │ └── logo/ │ │ │ ├── index.less │ │ │ ├── index.tsx │ │ │ ├── initial-data.ts │ │ │ ├── musk.tsx │ │ │ ├── node-color.ts │ │ │ ├── node-registries.tsx │ │ │ ├── node-render.tsx │ │ │ ├── port.tsx │ │ │ ├── position-groups.ts │ │ │ ├── update-position.ts │ │ │ └── use-editor-props.tsx │ │ ├── index.tsx │ │ ├── theme.css │ │ └── use-is-mobile.ts │ └── tsconfig.json ├── common/ │ ├── autoinstallers/ │ │ ├── dep-check/ │ │ │ ├── dep-check.ts │ │ │ ├── index.js │ │ │ └── package.json │ │ ├── license-header/ │ │ │ ├── index.js │ │ │ └── package.json │ │ ├── rush-commands/ │ │ │ ├── check-circular-dependency.mjs │ │ │ └── package.json │ │ ├── rush-commitlint/ │ │ │ ├── .cz-config.js │ │ │ ├── commitlint.config.js │ │ │ ├── package.json │ │ │ └── utils.js │ │ └── rush-lint-staged/ │ │ ├── .lintstagedrc.js │ │ ├── package.json │ │ └── utils.js │ ├── config/ │ │ └── rush/ │ │ ├── .npmrc │ │ ├── .npmrc-publish │ │ ├── .pnpmfile.cjs │ │ ├── artifactory.json │ │ ├── build-cache.json │ │ ├── cobuild.json │ │ ├── command-line.json │ │ ├── common-versions.json │ │ ├── custom-tips.json │ │ ├── experiments.json │ │ ├── pnpm-config.json │ │ ├── repo-state.json │ │ ├── rush-plugins.json │ │ ├── subspaces.json │ │ └── version-policies.json │ ├── git-hooks/ │ │ ├── commit-msg │ │ ├── post-checkout │ │ └── pre-commit │ └── scripts/ │ ├── install-run-rush-pnpm.js │ ├── install-run-rush.js │ ├── install-run-rushx.js │ └── install-run.js ├── config/ │ ├── eslint-config/ │ │ ├── CHANGELOG.json │ │ ├── CHANGELOG.md │ │ ├── eslint.base.config.js │ │ ├── eslint.config.js │ │ ├── eslint.node.config.js │ │ ├── eslint.web.config.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── defineFlatConfig.js │ │ │ ├── defineFlatConfig.ts │ │ │ └── index.js │ │ └── tsconfig.json │ └── ts-config/ │ ├── eslint.config.js │ ├── global.d.ts │ ├── package.json │ ├── tsconfig.base.json │ ├── tsconfig.flow.base.json │ ├── tsconfig.flow.path.json │ ├── tsconfig.infra.base.json │ ├── tsconfig.infra.node.json │ └── tsconfig.node.json ├── cspell.json ├── doc_build.sh ├── e2e/ │ ├── fixed-layout/ │ │ ├── README.md │ │ ├── eslint.config.js │ │ ├── package.json │ │ ├── playwright.config.ts │ │ ├── tests/ │ │ │ ├── drag.spec.ts │ │ │ ├── drawer.spec.ts │ │ │ ├── layout.spec.ts │ │ │ ├── models/ │ │ │ │ └── index.ts │ │ │ ├── node.spec.ts │ │ │ ├── testrun.spec.ts │ │ │ ├── typings/ │ │ │ │ ├── drag.ts │ │ │ │ └── index.ts │ │ │ ├── validate.spec.ts │ │ │ └── variable.spec.ts │ │ ├── tsconfig.json │ │ └── utils/ │ │ └── index.ts │ └── free-layout/ │ ├── eslint.config.js │ ├── package.json │ ├── playwright.config.ts │ ├── tests/ │ │ ├── layout.spec.ts │ │ ├── models/ │ │ │ └── index.ts │ │ └── node.spec.ts │ └── tsconfig.json ├── packages/ │ ├── canvas-engine/ │ │ ├── core/ │ │ │ ├── __mocks__/ │ │ │ │ ├── create-entity.mock.ts │ │ │ │ ├── layers.mock.tsx │ │ │ │ └── playground-container.mock.ts │ │ │ ├── __tests__/ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ ├── pipeline.spec.tsx.snap │ │ │ │ │ └── playground.test.ts.snap │ │ │ │ ├── core/ │ │ │ │ │ └── layer/ │ │ │ │ │ ├── config/ │ │ │ │ │ │ ├── editor-state-config-entity.spec.ts │ │ │ │ │ │ └── payground-config-entity.spec.ts │ │ │ │ │ └── playground-layer.spec.tsx │ │ │ │ ├── entity.spec.ts │ │ │ │ ├── layer.spec.tsx │ │ │ │ ├── pipeline.spec.tsx │ │ │ │ ├── playground-contribution.spec.tsx │ │ │ │ ├── playground-mock-tools.spec.ts │ │ │ │ ├── playground-react.spec.tsx │ │ │ │ ├── playground.test.ts │ │ │ │ ├── plugin.test.ts │ │ │ │ ├── react-hooks.spec.tsx │ │ │ │ ├── schema.spec.ts │ │ │ │ ├── selection.spec.ts │ │ │ │ ├── services/ │ │ │ │ │ ├── clipboard-service.spec.ts │ │ │ │ │ └── storage-service.spec.ts │ │ │ │ ├── transform-schema.spec.ts │ │ │ │ └── utils.test.ts │ │ │ ├── eslint.config.js │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── common/ │ │ │ │ │ ├── config-entity.ts │ │ │ │ │ ├── entity-data.ts │ │ │ │ │ ├── entity-manager-contribution.ts │ │ │ │ │ ├── entity-manager.ts │ │ │ │ │ ├── entity.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── playground-context.ts │ │ │ │ │ ├── playground-decorator-helper.ts │ │ │ │ │ ├── playground-decorators.ts │ │ │ │ │ ├── playground-schedule.ts │ │ │ │ │ ├── protect-wheel-area.ts │ │ │ │ │ ├── schema/ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── node.ts │ │ │ │ │ │ ├── opacity-schema.ts │ │ │ │ │ │ ├── origin-schema.ts │ │ │ │ │ │ ├── position-schema.ts │ │ │ │ │ │ ├── rotation-schema.ts │ │ │ │ │ │ ├── scale-schema.ts │ │ │ │ │ │ ├── size-schema.ts │ │ │ │ │ │ ├── skew-schema.ts │ │ │ │ │ │ └── transform-schema.ts │ │ │ │ │ └── utils/ │ │ │ │ │ ├── bounds.spec.ts │ │ │ │ │ ├── bounds.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── core/ │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── layer/ │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ ├── editor-state-config-entity.ts │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ └── playground-config-entity.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── layer.ts │ │ │ │ │ │ └── playground-layer.ts │ │ │ │ │ ├── pipeline/ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── pipeline-entities-selector.ts │ │ │ │ │ │ ├── pipeline-entities.ts │ │ │ │ │ │ ├── pipeline-registry.ts │ │ │ │ │ │ ├── pipeline-renderer.tsx │ │ │ │ │ │ ├── pipeline.ts │ │ │ │ │ │ └── pipline-react-utils.tsx │ │ │ │ │ └── utils/ │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── inject-provider-decorators.ts │ │ │ │ │ ├── lazy-inject-decorators.ts │ │ │ │ │ ├── mouse-touch-event.ts │ │ │ │ │ ├── playground-drag.ts │ │ │ │ │ ├── playground-gesture.spec.ts │ │ │ │ │ ├── playground-gesture.ts │ │ │ │ │ ├── tween.ts │ │ │ │ │ └── use-gesture/ │ │ │ │ │ ├── core/ │ │ │ │ │ │ ├── Controller.ts │ │ │ │ │ │ ├── EventStore.ts │ │ │ │ │ │ ├── TimeoutStore.ts │ │ │ │ │ │ ├── actions.ts │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ ├── commonConfigResolver.ts │ │ │ │ │ │ │ ├── coordinatesConfigResolver.ts │ │ │ │ │ │ │ ├── dragConfigResolver.ts │ │ │ │ │ │ │ ├── hoverConfigResolver.ts │ │ │ │ │ │ │ ├── moveConfigResolver.ts │ │ │ │ │ │ │ ├── pinchConfigResolver.ts │ │ │ │ │ │ │ ├── resolver.ts │ │ │ │ │ │ │ ├── scrollConfigResolver.ts │ │ │ │ │ │ │ ├── sharedConfigResolver.ts │ │ │ │ │ │ │ ├── support.ts │ │ │ │ │ │ │ └── wheelConfigResolver.ts │ │ │ │ │ │ ├── engines/ │ │ │ │ │ │ │ ├── CoordinatesEngine.ts │ │ │ │ │ │ │ ├── DragEngine.ts │ │ │ │ │ │ │ ├── Engine.ts │ │ │ │ │ │ │ ├── HoverEngine.ts │ │ │ │ │ │ │ ├── MoveEngine.ts │ │ │ │ │ │ │ ├── PinchEngine.ts │ │ │ │ │ │ │ ├── ScrollEngine.ts │ │ │ │ │ │ │ └── WheelEngine.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── parser.ts │ │ │ │ │ │ ├── types/ │ │ │ │ │ │ │ ├── action.ts │ │ │ │ │ │ │ ├── config.ts │ │ │ │ │ │ │ ├── handlers.ts │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ ├── internalConfig.ts │ │ │ │ │ │ │ ├── state.ts │ │ │ │ │ │ │ └── utils.ts │ │ │ │ │ │ ├── types.ts │ │ │ │ │ │ ├── utils/ │ │ │ │ │ │ │ ├── events.ts │ │ │ │ │ │ │ ├── fn.ts │ │ │ │ │ │ │ ├── maths.ts │ │ │ │ │ │ │ └── state.ts │ │ │ │ │ │ └── utils.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── vanilla/ │ │ │ │ │ ├── DragGesture.ts │ │ │ │ │ ├── Gesture.ts │ │ │ │ │ ├── HoverGesture.ts │ │ │ │ │ ├── MoveGesture.ts │ │ │ │ │ ├── PinchGesture.ts │ │ │ │ │ ├── Recognizer.ts │ │ │ │ │ ├── ScrollGesture.ts │ │ │ │ │ ├── WheelGesture.ts │ │ │ │ │ ├── createGesture.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── index.ts │ │ │ │ ├── playground-config.ts │ │ │ │ ├── playground-container.ts │ │ │ │ ├── playground-contribution.ts │ │ │ │ ├── playground-mock-tools.ts │ │ │ │ ├── playground.ts │ │ │ │ ├── plugin/ │ │ │ │ │ ├── index.ts │ │ │ │ │ └── plugin.ts │ │ │ │ ├── react/ │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── playground-react-context.ts │ │ │ │ │ ├── playground-react-provider.tsx │ │ │ │ │ └── playground-react-renderer.tsx │ │ │ │ ├── react-hooks/ │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── use-config-entity.ts │ │ │ │ │ ├── use-entities.ts │ │ │ │ │ ├── use-entity-data-from-context.ts │ │ │ │ │ ├── use-entity-from-context.ts │ │ │ │ │ ├── use-listen-events.ts │ │ │ │ │ ├── use-playground-container.ts │ │ │ │ │ ├── use-playground-context.ts │ │ │ │ │ ├── use-playground-drag.ts │ │ │ │ │ ├── use-playground.ts │ │ │ │ │ ├── use-refresh.ts │ │ │ │ │ └── use-service.ts │ │ │ │ └── services/ │ │ │ │ ├── clipboard-service.ts │ │ │ │ ├── context-menu-service.ts │ │ │ │ ├── index.ts │ │ │ │ ├── logger-service.ts │ │ │ │ ├── selection-service.ts │ │ │ │ └── storage-service.ts │ │ │ ├── tsconfig.json │ │ │ ├── vitest.config.ts │ │ │ └── vitest.setup.ts │ │ ├── document/ │ │ │ ├── __tests__/ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ └── flow-document.test.ts.snap │ │ │ │ ├── datas/ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ └── flow-node-transition-data.spec.ts.snap │ │ │ │ │ ├── flow-node-render-data.spec.ts │ │ │ │ │ └── flow-node-transition-data.spec.ts │ │ │ │ ├── flow-document-container.mock.ts │ │ │ │ ├── flow-document-transformer.test.ts │ │ │ │ ├── flow-document.test.ts │ │ │ │ ├── flow-node-entity.spec.ts │ │ │ │ ├── flow-node-registry.spec.ts │ │ │ │ ├── flow-render-tree.spec.ts │ │ │ │ ├── flow-virtual-tree.spec.ts │ │ │ │ ├── flow.mock.ts │ │ │ │ └── services/ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ └── flow-operation-base-service.test.ts.snap │ │ │ │ └── flow-operation-base-service.test.ts │ │ │ ├── eslint.config.js │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── datas/ │ │ │ │ │ ├── flow-node-render-data.ts │ │ │ │ │ ├── flow-node-transform-data.ts │ │ │ │ │ ├── flow-node-transition-data.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── entities/ │ │ │ │ │ ├── flow-document-transformer-entity.ts │ │ │ │ │ ├── flow-node-entity.ts │ │ │ │ │ ├── flow-renderer-state-entity.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── flow-document-config.ts │ │ │ │ ├── flow-document-container-module.ts │ │ │ │ ├── flow-document-contribution.ts │ │ │ │ ├── flow-document-options.ts │ │ │ │ ├── flow-document.ts │ │ │ │ ├── flow-render-tree.ts │ │ │ │ ├── flow-virtual-tree.ts │ │ │ │ ├── index.ts │ │ │ │ ├── layout/ │ │ │ │ │ ├── horizontal-fixed-layout.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── vertical-fixed-layout.ts │ │ │ │ ├── services/ │ │ │ │ │ ├── flow-drag-service.ts │ │ │ │ │ ├── flow-group-service/ │ │ │ │ │ │ ├── flow-group-controller.ts │ │ │ │ │ │ ├── flow-group-service.ts │ │ │ │ │ │ ├── flow-group-utils.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── flow-operation-base-service.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── typings/ │ │ │ │ │ ├── flow-group.ts │ │ │ │ │ ├── flow-layout.ts │ │ │ │ │ ├── flow-node-register.ts │ │ │ │ │ ├── flow-operation.ts │ │ │ │ │ ├── flow-transition.ts │ │ │ │ │ ├── flow.ts │ │ │ │ │ └── index.ts │ │ │ │ └── utils/ │ │ │ │ ├── get-default-spacing.ts │ │ │ │ └── index.ts │ │ │ ├── tsconfig.json │ │ │ ├── vitest.config.ts │ │ │ └── vitest.setup.ts │ │ ├── fixed-layout-core/ │ │ │ ├── __tests__/ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ └── flow-activities.spec.ts.snap │ │ │ │ ├── flow-activities.mock.ts │ │ │ │ └── flow-activities.spec.ts │ │ │ ├── eslint.config.js │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── activities/ │ │ │ │ │ ├── block-icon.ts │ │ │ │ │ ├── block-order-icon.ts │ │ │ │ │ ├── block.ts │ │ │ │ │ ├── break.ts │ │ │ │ │ ├── dynamic-split.ts │ │ │ │ │ ├── empty.ts │ │ │ │ │ ├── end.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── inline-blocks.ts │ │ │ │ │ ├── input.ts │ │ │ │ │ ├── loop-extends/ │ │ │ │ │ │ ├── constants.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── loop-empty-branch.ts │ │ │ │ │ │ ├── loop-inline-blocks.ts │ │ │ │ │ │ ├── loop-left-empty-block.ts │ │ │ │ │ │ └── loop-right-empty-block.ts │ │ │ │ │ ├── loop.ts │ │ │ │ │ ├── multi-inputs.ts │ │ │ │ │ ├── multi-outputs.ts │ │ │ │ │ ├── output.ts │ │ │ │ │ ├── root.ts │ │ │ │ │ ├── simple-split.ts │ │ │ │ │ ├── slot/ │ │ │ │ │ │ ├── constants.ts │ │ │ │ │ │ ├── extends/ │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ ├── slot-block.ts │ │ │ │ │ │ │ ├── slot-icon.ts │ │ │ │ │ │ │ └── slot-inline-blocks.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── slot.ts │ │ │ │ │ │ ├── typings.ts │ │ │ │ │ │ └── utils/ │ │ │ │ │ │ ├── create.ts │ │ │ │ │ │ ├── layout.ts │ │ │ │ │ │ ├── node.ts │ │ │ │ │ │ └── transition.ts │ │ │ │ │ ├── start.ts │ │ │ │ │ ├── static-split.ts │ │ │ │ │ ├── try-catch-extends/ │ │ │ │ │ │ ├── catch-block.ts │ │ │ │ │ │ ├── catch-inline-blocks.ts │ │ │ │ │ │ ├── constants.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── main-inline-blocks.ts │ │ │ │ │ │ ├── try-block.ts │ │ │ │ │ │ └── try-slot.ts │ │ │ │ │ └── try-catch.ts │ │ │ │ ├── fixed-layout-container-module.ts │ │ │ │ ├── flow-registers.ts │ │ │ │ └── index.ts │ │ │ ├── tsconfig.json │ │ │ ├── vitest.config.ts │ │ │ └── vitest.setup.ts │ │ ├── free-layout-core/ │ │ │ ├── __tests__/ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ └── workflow-lines-manager.test.ts.snap │ │ │ │ ├── hooks/ │ │ │ │ │ ├── use-current-dom-node.test.ts │ │ │ │ │ ├── use-current-entity.test.ts │ │ │ │ │ ├── use-node-render.test.tsx │ │ │ │ │ ├── use-playground-readonly-state.test.ts │ │ │ │ │ └── use-workflow-document.test.ts │ │ │ │ ├── mocks/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── service/ │ │ │ │ │ ├── workflow-drag-service.test.ts │ │ │ │ │ ├── workflow-hover-service.test.ts │ │ │ │ │ └── workflow-select-service.test.ts │ │ │ │ ├── simple-line.ts │ │ │ │ ├── utils/ │ │ │ │ │ └── location-config-to-point.test.ts │ │ │ │ ├── workflow-document.test.ts │ │ │ │ └── workflow-lines-manager.test.ts │ │ │ ├── eslint.config.js │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── constants.ts │ │ │ │ ├── entities/ │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── workflow-line-entity.ts │ │ │ │ │ ├── workflow-node-entity.ts │ │ │ │ │ └── workflow-port-entity.ts │ │ │ │ ├── entity-datas/ │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── workflow-line-render-data.ts │ │ │ │ │ ├── workflow-node-lines-data.ts │ │ │ │ │ └── workflow-node-ports-data.ts │ │ │ │ ├── hooks/ │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── typings.ts │ │ │ │ │ ├── use-current-dom-node.ts │ │ │ │ │ ├── use-current-entity.ts │ │ │ │ │ ├── use-node-render-context.ts │ │ │ │ │ ├── use-node-render.tsx │ │ │ │ │ ├── use-playground-readonly-state.ts │ │ │ │ │ └── use-workflow-document.ts │ │ │ │ ├── index.ts │ │ │ │ ├── layout/ │ │ │ │ │ ├── free-layout.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── service/ │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── workflow-drag-service.ts │ │ │ │ │ ├── workflow-hover-service.ts │ │ │ │ │ ├── workflow-operation-base-service.ts │ │ │ │ │ ├── workflow-reset-layout-service.ts │ │ │ │ │ └── workflow-select-service.ts │ │ │ │ ├── typings/ │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── workflow-drag.ts │ │ │ │ │ ├── workflow-edge.ts │ │ │ │ │ ├── workflow-json.ts │ │ │ │ │ ├── workflow-line.ts │ │ │ │ │ ├── workflow-node.ts │ │ │ │ │ ├── workflow-operation.ts │ │ │ │ │ ├── workflow-registry.ts │ │ │ │ │ └── workflow-sub-canvas.ts │ │ │ │ ├── utils/ │ │ │ │ │ ├── build-group-json.ts │ │ │ │ │ ├── compose.ts │ │ │ │ │ ├── fit-view.ts │ │ │ │ │ ├── flow-node-form-data.ts │ │ │ │ │ ├── get-anti-overlap-position.ts │ │ │ │ │ ├── get-line-center.ts │ │ │ │ │ ├── get-url-params.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── layout-to-positions.ts │ │ │ │ │ ├── location-config-to-point.ts │ │ │ │ │ ├── nanoid.ts │ │ │ │ │ └── statics.ts │ │ │ │ ├── workflow-commands.ts │ │ │ │ ├── workflow-document-container-module.ts │ │ │ │ ├── workflow-document-contribution.ts │ │ │ │ ├── workflow-document-option.ts │ │ │ │ ├── workflow-document.ts │ │ │ │ └── workflow-lines-manager.ts │ │ │ ├── tsconfig.json │ │ │ ├── vitest.config.ts │ │ │ └── vitest.setup.ts │ │ └── renderer/ │ │ ├── __mocks__/ │ │ │ ├── flow-document-container.mock.ts │ │ │ ├── flow-drag-entity.ts │ │ │ ├── flow-json.mock.ts │ │ │ ├── flow-labels-mock-register.ts │ │ │ ├── flow-mock-node-json.ts │ │ │ ├── flow-selected-nodes.mock.ts │ │ │ ├── mock-lines.ts │ │ │ ├── renderer.mock.ts │ │ │ └── setup-file.ts │ │ ├── __tests__/ │ │ │ ├── components/ │ │ │ │ ├── Adder.test.tsx │ │ │ │ └── rounded-turning-line.test.tsx │ │ │ ├── entities/ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ └── flow-drag-entities.test.ts.snap │ │ │ │ ├── flow-drag-entities.test.ts │ │ │ │ └── flow-select-config-entity.test.ts │ │ │ ├── flow-renderer.tsx │ │ │ ├── layers/ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ ├── flow-drag-layer.test.ts.snap │ │ │ │ │ ├── flow-label-layer.test.tsx.snap │ │ │ │ │ └── flow-selector-box-layer.test.tsx.snap │ │ │ │ ├── flow-drag-layer.test.ts │ │ │ │ ├── flow-label-layer.test.tsx │ │ │ │ ├── flow-lines-layer.test.ts │ │ │ │ ├── flow-selector-box-layer.test.tsx │ │ │ │ └── flow-transform-layer.test.tsx │ │ │ └── utils/ │ │ │ ├── element.test.ts │ │ │ ├── find-selected-nodes.test.ts │ │ │ ├── get-vertices.test.ts │ │ │ └── scroll-limit.test.ts │ │ ├── eslint.config.js │ │ ├── index.module.less │ │ ├── package.json │ │ ├── src/ │ │ │ ├── components/ │ │ │ │ ├── Adder.tsx │ │ │ │ ├── BranchDraggableRenderer.tsx │ │ │ │ ├── Collapse.tsx │ │ │ │ ├── CollapseAdder.tsx │ │ │ │ ├── CustomLine.tsx │ │ │ │ ├── LabelsRenderer.tsx │ │ │ │ ├── LinesRenderer.tsx │ │ │ │ ├── MarkerActivatedArrow.tsx │ │ │ │ ├── MarkerArrow.tsx │ │ │ │ ├── RoundedTurningLine.tsx │ │ │ │ ├── StraightLine.tsx │ │ │ │ └── utils.tsx │ │ │ ├── entities/ │ │ │ │ ├── README.md │ │ │ │ ├── flow-drag-entity.tsx │ │ │ │ ├── flow-select-config-entity.tsx │ │ │ │ ├── index.ts │ │ │ │ └── selector-box-config-entity.ts │ │ │ ├── flow-renderer-container-module.ts │ │ │ ├── flow-renderer-contribution.ts │ │ │ ├── flow-renderer-registry.ts │ │ │ ├── flow-renderer-resize-observer.ts │ │ │ ├── hooks/ │ │ │ │ └── use-base-color.ts │ │ │ ├── index.ts │ │ │ ├── layers/ │ │ │ │ ├── flow-context-menu-layer.tsx │ │ │ │ ├── flow-debug-layer.tsx │ │ │ │ ├── flow-drag-layer.tsx │ │ │ │ ├── flow-labels-layer.tsx │ │ │ │ ├── flow-lines-layer.tsx │ │ │ │ ├── flow-nodes-content-layer.tsx │ │ │ │ ├── flow-nodes-transform-layer.tsx │ │ │ │ ├── flow-scroll-bar-layer.tsx │ │ │ │ ├── flow-scroll-limit-layer.tsx │ │ │ │ ├── flow-selector-bounds-layer.tsx │ │ │ │ ├── flow-selector-box-layer.tsx │ │ │ │ └── index.ts │ │ │ └── utils/ │ │ │ ├── element.ts │ │ │ ├── find-selected-nodes.ts │ │ │ ├── index.ts │ │ │ ├── scroll-bar-events.tsx │ │ │ └── scroll-limit.ts │ │ ├── tsconfig.json │ │ ├── vitest.config.ts │ │ └── vitest.setup.ts │ ├── client/ │ │ ├── editor/ │ │ │ ├── eslint.config.js │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── clients/ │ │ │ │ │ ├── flow-editor-client-plugins.ts │ │ │ │ │ ├── flow-editor-client.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── node-client/ │ │ │ │ │ ├── create-node-client-plugins.ts │ │ │ │ │ ├── highlight/ │ │ │ │ │ │ ├── constants.ts │ │ │ │ │ │ ├── create-node-highlight-plugin.ts │ │ │ │ │ │ ├── highlight-form-item.ts │ │ │ │ │ │ ├── highlight-style.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── use-highlight.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── node-client.ts │ │ │ │ │ └── node-focus-service.ts │ │ │ │ ├── components/ │ │ │ │ │ ├── editor-provider.tsx │ │ │ │ │ ├── editor-renderer.tsx │ │ │ │ │ ├── editor.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── hooks/ │ │ │ │ │ ├── index.ts │ │ │ │ │ └── use-flow-editor.ts │ │ │ │ ├── index.ts │ │ │ │ └── preset/ │ │ │ │ ├── editor-default-preset.ts │ │ │ │ ├── editor-props.ts │ │ │ │ └── index.ts │ │ │ ├── tsconfig.json │ │ │ ├── vitest.config.ts │ │ │ └── vitest.setup.ts │ │ ├── fixed-layout-editor/ │ │ │ ├── __mocks__/ │ │ │ │ ├── flow.mock.ts │ │ │ │ └── form.mock.tsx │ │ │ ├── __tests__/ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ └── fixed-layout-preset.test.ts.snap │ │ │ │ ├── create-container.ts │ │ │ │ ├── fixed-layout-preset.test.ts │ │ │ │ ├── services/ │ │ │ │ │ ├── flow-operation-service.test.ts │ │ │ │ │ └── history-operation-service/ │ │ │ │ │ ├── add-block.test.ts │ │ │ │ │ ├── add-from-node.test.ts │ │ │ │ │ ├── add-node.test.ts │ │ │ │ │ ├── apply.test.ts │ │ │ │ │ ├── create-group.test.ts │ │ │ │ │ ├── delete-node.test.ts │ │ │ │ │ ├── delete-nodes.test.ts │ │ │ │ │ ├── move-node.test.ts │ │ │ │ │ ├── set-form-value.test.tsx │ │ │ │ │ ├── transact.test.ts │ │ │ │ │ └── ungroup.test.ts │ │ │ │ └── utils.ts │ │ │ ├── eslint.config.js │ │ │ ├── index.css │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── components/ │ │ │ │ │ ├── fixed-layout-editor-provider.tsx │ │ │ │ │ ├── fixed-layout-editor.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── hooks/ │ │ │ │ │ ├── use-client-context.ts │ │ │ │ │ ├── use-node-render.tsx │ │ │ │ │ └── use-playground-tools.ts │ │ │ │ ├── index.ts │ │ │ │ ├── plugins/ │ │ │ │ │ └── create-operation-plugin.ts │ │ │ │ ├── preset/ │ │ │ │ │ ├── fixed-layout-preset.ts │ │ │ │ │ ├── fixed-layout-props.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── node-serialize.ts │ │ │ │ ├── services/ │ │ │ │ │ ├── flow-operation-service.ts │ │ │ │ │ └── history-operation-service.ts │ │ │ │ ├── types.ts │ │ │ │ └── utils/ │ │ │ │ └── compose.ts │ │ │ ├── tsconfig.json │ │ │ ├── vitest.config.ts │ │ │ └── vitest.setup.ts │ │ ├── free-layout-editor/ │ │ │ ├── __mocks__/ │ │ │ │ └── flow.mocks.ts │ │ │ ├── __tests__/ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ └── free-layout-preset.test.ts.snap │ │ │ │ ├── create-editor.ts │ │ │ │ ├── free-layout-preset.test.ts │ │ │ │ ├── history.test.ts │ │ │ │ ├── use-playground-tools.test.ts │ │ │ │ └── utils.mock.tsx │ │ │ ├── eslint.config.js │ │ │ ├── index.css │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── components/ │ │ │ │ │ ├── free-layout-editor-provider.tsx │ │ │ │ │ ├── free-layout-editor.tsx │ │ │ │ │ ├── index.ts │ │ │ │ │ └── workflow-node-renderer.tsx │ │ │ │ ├── hooks/ │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── use-auto-layout.ts │ │ │ │ │ ├── use-client-context.ts │ │ │ │ │ └── use-playground-tools.ts │ │ │ │ ├── index.ts │ │ │ │ ├── plugins/ │ │ │ │ │ └── create-operation-plugin.ts │ │ │ │ ├── preset/ │ │ │ │ │ ├── free-layout-preset.ts │ │ │ │ │ ├── free-layout-props.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── node-serialize.ts │ │ │ │ ├── services/ │ │ │ │ │ ├── flow-operation-service.ts │ │ │ │ │ └── history-operation-service.ts │ │ │ │ ├── tools/ │ │ │ │ │ ├── auto-layout.ts │ │ │ │ │ └── index.ts │ │ │ │ └── types.ts │ │ │ ├── tsconfig.json │ │ │ ├── vitest.config.ts │ │ │ └── vitest.setup.ts │ │ └── playground-react/ │ │ ├── eslint.config.js │ │ ├── index.css │ │ ├── package.json │ │ ├── src/ │ │ │ ├── components/ │ │ │ │ ├── index.ts │ │ │ │ ├── playground-react-content.tsx │ │ │ │ └── playground-react.tsx │ │ │ ├── hooks/ │ │ │ │ ├── index.ts │ │ │ │ └── use-playground-tools.ts │ │ │ ├── index.ts │ │ │ ├── layers/ │ │ │ │ └── playground-content-layer.tsx │ │ │ └── preset/ │ │ │ ├── index.ts │ │ │ ├── playground-react-preset.ts │ │ │ └── playground-react-props.ts │ │ ├── tsconfig.json │ │ ├── vitest.config.ts │ │ └── vitest.setup.ts │ ├── common/ │ │ ├── command/ │ │ │ ├── eslint.config.js │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── command-container-module.ts │ │ │ │ ├── command-service.ts │ │ │ │ ├── command.ts │ │ │ │ └── index.ts │ │ │ ├── tsconfig.json │ │ │ ├── vitest.config.ts │ │ │ └── vitest.setup.ts │ │ ├── history/ │ │ │ ├── __mocks__/ │ │ │ │ ├── editor.mock.ts │ │ │ │ └── history-container.mock.ts │ │ │ ├── __tests__/ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ ├── history-manager.test.ts.snap │ │ │ │ │ ├── history-service.test.ts.snap │ │ │ │ │ └── undo-redo-service.test.ts.snap │ │ │ │ ├── history-manager.test.ts │ │ │ │ ├── history-service.test.ts │ │ │ │ ├── operation-registry.test.ts │ │ │ │ ├── operation-service.test.ts │ │ │ │ └── undo-redo-service.test.ts │ │ │ ├── eslint.config.js │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── create-history-plugin.ts │ │ │ │ ├── history/ │ │ │ │ │ ├── history-manager.ts │ │ │ │ │ ├── history-service.ts │ │ │ │ │ ├── history-stack.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── stack-operation.ts │ │ │ │ │ ├── types.ts │ │ │ │ │ └── undo-redo-service.ts │ │ │ │ ├── history-config.ts │ │ │ │ ├── history-container-module.ts │ │ │ │ ├── history-context.ts │ │ │ │ ├── index.ts │ │ │ │ └── operation/ │ │ │ │ ├── index.ts │ │ │ │ ├── operation-contribution.ts │ │ │ │ ├── operation-registry.ts │ │ │ │ ├── operation-service.ts │ │ │ │ └── types.ts │ │ │ ├── tsconfig.json │ │ │ ├── vitest.config.ts │ │ │ └── vitest.setup.ts │ │ ├── history-storage/ │ │ │ ├── eslint.config.js │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── __mocks__/ │ │ │ │ │ └── index.ts │ │ │ │ ├── __tests__/ │ │ │ │ │ └── history-database.test.ts │ │ │ │ ├── create-history-storage-plugin.ts │ │ │ │ ├── history-database.ts │ │ │ │ ├── history-storage-container-module.ts │ │ │ │ ├── history-storage-manager.ts │ │ │ │ ├── index.ts │ │ │ │ ├── types.ts │ │ │ │ └── use-storage-hisotry-items.tsx │ │ │ ├── tsconfig.json │ │ │ ├── vitest.config.ts │ │ │ └── vitest.setup.ts │ │ ├── i18n/ │ │ │ ├── __tests__/ │ │ │ │ └── i18n.test.ts │ │ │ ├── eslint.config.js │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── i18n/ │ │ │ │ │ ├── en-US.ts │ │ │ │ │ └── zh-CN.ts │ │ │ │ └── index.ts │ │ │ ├── tsconfig.json │ │ │ └── vitest.config.ts │ │ ├── reactive/ │ │ │ ├── README.md │ │ │ ├── __tests__/ │ │ │ │ ├── hooks.test.tsx │ │ │ │ ├── observe.test.tsx │ │ │ │ ├── reactive-base-state.test.ts │ │ │ │ ├── reactive-state.test.ts │ │ │ │ └── tracker.test.ts │ │ │ ├── eslint.config.js │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── core/ │ │ │ │ │ ├── reactive-base-state.ts │ │ │ │ │ ├── reactive-state.ts │ │ │ │ │ └── tracker.ts │ │ │ │ ├── hooks/ │ │ │ │ │ ├── use-observe.ts │ │ │ │ │ ├── use-reactive-state.ts │ │ │ │ │ └── use-readonly-reactive-state.ts │ │ │ │ ├── index.ts │ │ │ │ ├── react/ │ │ │ │ │ └── observe.tsx │ │ │ │ └── utils/ │ │ │ │ └── create-proxy.ts │ │ │ ├── tsconfig.json │ │ │ └── vitest.config.ts │ │ └── utils/ │ │ ├── eslint.config.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── add-event-listener.ts │ │ │ ├── array.spec.ts │ │ │ ├── array.ts │ │ │ ├── cache.spec.ts │ │ │ ├── cache.ts │ │ │ ├── cancellation.spec.ts │ │ │ ├── cancellation.ts │ │ │ ├── compare.spec.ts │ │ │ ├── compare.ts │ │ │ ├── compose.ts │ │ │ ├── contribution-provider.ts │ │ │ ├── decoration-style.ts │ │ │ ├── disposable-collection.ts │ │ │ ├── disposable.spec.ts │ │ │ ├── disposable.ts │ │ │ ├── dom-utils.spec.ts │ │ │ ├── dom-utils.ts │ │ │ ├── event.spec.ts │ │ │ ├── event.ts │ │ │ ├── hooks/ │ │ │ │ ├── use-refresh.spec.tsx │ │ │ │ └── use-refresh.ts │ │ │ ├── id.spec.ts │ │ │ ├── id.ts │ │ │ ├── index.spec.ts │ │ │ ├── index.ts │ │ │ ├── inversify-utils.ts │ │ │ ├── logger.spec.ts │ │ │ ├── logger.ts │ │ │ ├── math/ │ │ │ │ ├── IPoint.spec.ts │ │ │ │ ├── IPoint.ts │ │ │ │ ├── Matrix.spec.ts │ │ │ │ ├── Matrix.ts │ │ │ │ ├── ObservablePoint.spec.ts │ │ │ │ ├── ObservablePoint.ts │ │ │ │ ├── Point.spec.ts │ │ │ │ ├── Point.ts │ │ │ │ ├── Transform.spec.ts │ │ │ │ ├── Transform.ts │ │ │ │ ├── Vector2.spec.ts │ │ │ │ ├── Vector2.ts │ │ │ │ ├── angle.spec.ts │ │ │ │ ├── angle.ts │ │ │ │ ├── const.spec.ts │ │ │ │ ├── const.ts │ │ │ │ ├── index.spec.ts │ │ │ │ ├── index.ts │ │ │ │ ├── shapes/ │ │ │ │ │ ├── Circle.spec.ts │ │ │ │ │ ├── Circle.ts │ │ │ │ │ ├── Rectangle.spec.ts │ │ │ │ │ ├── Rectangle.ts │ │ │ │ │ ├── index.spec.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── wrap.spec.ts │ │ │ │ └── wrap.ts │ │ │ ├── objects.spec.ts │ │ │ ├── objects.ts │ │ │ ├── promise-util.spec.ts │ │ │ ├── promise-util.ts │ │ │ ├── request-with-memo.spec.ts │ │ │ ├── request-with-memo.ts │ │ │ ├── schema/ │ │ │ │ ├── index.spec.ts │ │ │ │ ├── index.ts │ │ │ │ ├── schema-base.ts │ │ │ │ ├── schema-transform.ts │ │ │ │ ├── schema.spec.ts │ │ │ │ └── schema.ts │ │ │ ├── types.spec.ts │ │ │ └── types.ts │ │ ├── tsconfig.json │ │ └── vitest.config.ts │ ├── materials/ │ │ ├── coze-editor/ │ │ │ ├── eslint.config.js │ │ │ ├── package.json │ │ │ ├── rslib.config.ts │ │ │ ├── scripts/ │ │ │ │ └── gen.js │ │ │ ├── src/ │ │ │ │ ├── index.ts │ │ │ │ ├── language-json.ts │ │ │ │ ├── language-python.ts │ │ │ │ ├── language-shell.ts │ │ │ │ ├── language-sql.ts │ │ │ │ ├── language-typescript/ │ │ │ │ │ └── worker.ts │ │ │ │ ├── language-typescript.ts │ │ │ │ ├── preset-code.ts │ │ │ │ ├── preset-expression.ts │ │ │ │ ├── preset-none.ts │ │ │ │ ├── preset-prompt.ts │ │ │ │ ├── preset-universal.ts │ │ │ │ ├── preset-variable.ts │ │ │ │ ├── react-merge.ts │ │ │ │ ├── react.ts │ │ │ │ └── vscode.ts │ │ │ ├── tsconfig.json │ │ │ ├── vitest.config.ts │ │ │ └── vitest.setup.ts │ │ ├── fixed-semi-materials/ │ │ │ ├── eslint.config.js │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── assets/ │ │ │ │ │ ├── ellipsis.tsx │ │ │ │ │ ├── icons.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── components/ │ │ │ │ │ ├── adder/ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── styles.tsx │ │ │ │ │ ├── branch-adder/ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── styles.tsx │ │ │ │ │ ├── collapse/ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── styles.tsx │ │ │ │ │ ├── constants.tsx │ │ │ │ │ ├── drag-highlight-adder/ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── styles.tsx │ │ │ │ │ ├── drag-node/ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── styles.tsx │ │ │ │ │ ├── dragging-adder/ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── styles.tsx │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── metadata.tsx │ │ │ │ │ ├── nodes/ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── styles.tsx │ │ │ │ │ ├── slot-adder.tsx │ │ │ │ │ ├── slot-collapse.tsx │ │ │ │ │ ├── tools.tsx │ │ │ │ │ └── try-catch-collapse.tsx │ │ │ │ └── index.ts │ │ │ ├── tsconfig.json │ │ │ ├── vitest.config.ts │ │ │ └── vitest.setup.ts │ │ ├── form-antd-materials/ │ │ │ ├── eslint.config.js │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── components/ │ │ │ │ │ ├── batch-variable-selector/ │ │ │ │ │ │ ├── config.json │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── condition-row/ │ │ │ │ │ │ ├── config.json │ │ │ │ │ │ ├── constants.ts │ │ │ │ │ │ ├── hooks/ │ │ │ │ │ │ │ ├── styles.tsx │ │ │ │ │ │ │ ├── useOp.tsx │ │ │ │ │ │ │ └── useRule.ts │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ ├── styles.tsx │ │ │ │ │ │ └── types.ts │ │ │ │ │ ├── constant-input/ │ │ │ │ │ │ ├── config.json │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ ├── styles.tsx │ │ │ │ │ │ └── types.ts │ │ │ │ │ ├── dynamic-value-input/ │ │ │ │ │ │ ├── config.json │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── styles.tsx │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── json-schema-editor/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── blur-input.tsx │ │ │ │ │ │ ├── config.json │ │ │ │ │ │ ├── default-value.tsx │ │ │ │ │ │ ├── hooks.tsx │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ ├── styles.tsx │ │ │ │ │ │ ├── types.ts │ │ │ │ │ │ └── utils.ts │ │ │ │ │ ├── type-selector/ │ │ │ │ │ │ ├── config.json │ │ │ │ │ │ ├── constants.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ └── variable-selector/ │ │ │ │ │ ├── config.json │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── styles.tsx │ │ │ │ │ ├── types.ts │ │ │ │ │ └── use-variable-tree.tsx │ │ │ │ ├── effects/ │ │ │ │ │ ├── auto-rename-ref/ │ │ │ │ │ │ ├── config.json │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── provide-batch-input/ │ │ │ │ │ │ ├── config.json │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── provide-batch-outputs/ │ │ │ │ │ │ ├── config.json │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── provide-json-schema-outputs/ │ │ │ │ │ │ ├── config.json │ │ │ │ │ │ └── index.ts │ │ │ │ │ └── sync-variable-title/ │ │ │ │ │ ├── config.json │ │ │ │ │ └── index.ts │ │ │ │ ├── form-plugins/ │ │ │ │ │ ├── batch-outputs-plugin/ │ │ │ │ │ │ ├── config.json │ │ │ │ │ │ └── index.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── index.ts │ │ │ │ ├── typings/ │ │ │ │ │ ├── flow-value/ │ │ │ │ │ │ ├── config.json │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── json-schema/ │ │ │ │ │ ├── config.json │ │ │ │ │ └── index.ts │ │ │ │ └── utils/ │ │ │ │ ├── format-legacy-refs/ │ │ │ │ │ ├── config.json │ │ │ │ │ ├── index.ts │ │ │ │ │ └── readme.md │ │ │ │ ├── index.ts │ │ │ │ ├── json-schema/ │ │ │ │ │ ├── config.json │ │ │ │ │ └── index.ts │ │ │ │ └── svg-icon/ │ │ │ │ └── index.tsx │ │ │ ├── tsconfig.json │ │ │ ├── vitest.config.ts │ │ │ └── vitest.setup.ts │ │ ├── form-materials/ │ │ │ ├── bin/ │ │ │ │ └── run.sh │ │ │ ├── eslint.config.js │ │ │ ├── package.json │ │ │ ├── rslib.config.ts │ │ │ ├── scripts/ │ │ │ │ └── name-export.js │ │ │ ├── src/ │ │ │ │ ├── components/ │ │ │ │ │ ├── assign-row/ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── types.ts │ │ │ │ │ ├── assign-rows/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── batch-outputs/ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ ├── styles.css │ │ │ │ │ │ └── types.ts │ │ │ │ │ ├── batch-variable-selector/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── blur-input/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── code-editor/ │ │ │ │ │ │ ├── editor-all.tsx │ │ │ │ │ │ ├── editor-json.tsx │ │ │ │ │ │ ├── editor-python.tsx │ │ │ │ │ │ ├── editor-shell.tsx │ │ │ │ │ │ ├── editor-sql.tsx │ │ │ │ │ │ ├── editor-ts.tsx │ │ │ │ │ │ ├── editor.tsx │ │ │ │ │ │ ├── factory.tsx │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ ├── styles.css │ │ │ │ │ │ ├── theme/ │ │ │ │ │ │ │ ├── dark.ts │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ └── light.ts │ │ │ │ │ │ └── utils.ts │ │ │ │ │ ├── code-editor-mini/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── condition-context/ │ │ │ │ │ │ ├── context.tsx │ │ │ │ │ │ ├── hooks/ │ │ │ │ │ │ │ └── use-condition.tsx │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ ├── op.ts │ │ │ │ │ │ └── types.ts │ │ │ │ │ ├── condition-row/ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ ├── styles.css │ │ │ │ │ │ └── types.ts │ │ │ │ │ ├── constant-input/ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── types.ts │ │ │ │ │ ├── coze-editor-extensions/ │ │ │ │ │ │ ├── extensions/ │ │ │ │ │ │ │ ├── inputs-tree.tsx │ │ │ │ │ │ │ ├── variable-tag.tsx │ │ │ │ │ │ │ └── variable-tree.tsx │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── styles.css │ │ │ │ │ ├── db-condition-row/ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ ├── styles.css │ │ │ │ │ │ └── types.ts │ │ │ │ │ ├── display-flow-value/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── display-inputs-values/ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── styles.css │ │ │ │ │ ├── display-outputs/ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── styles.css │ │ │ │ │ ├── display-schema-tag/ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── styles.css │ │ │ │ │ ├── display-schema-tree/ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── styles.css │ │ │ │ │ ├── dynamic-value-input/ │ │ │ │ │ │ ├── hooks.ts │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── styles.css │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── inputs-values/ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ ├── styles.css │ │ │ │ │ │ └── types.ts │ │ │ │ │ ├── inputs-values-tree/ │ │ │ │ │ │ ├── hooks/ │ │ │ │ │ │ │ └── use-child-list.tsx │ │ │ │ │ │ ├── icon.tsx │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ ├── row.tsx │ │ │ │ │ │ ├── styles.css │ │ │ │ │ │ └── types.ts │ │ │ │ │ ├── json-editor-with-variables/ │ │ │ │ │ │ ├── editor.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── json-schema-creator/ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ ├── json-input-modal.tsx │ │ │ │ │ │ ├── json-schema-creator.tsx │ │ │ │ │ │ └── utils/ │ │ │ │ │ │ └── json-to-schema.ts │ │ │ │ │ ├── json-schema-editor/ │ │ │ │ │ │ ├── default-value.tsx │ │ │ │ │ │ ├── hooks.tsx │ │ │ │ │ │ ├── icon.tsx │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ ├── styles.css │ │ │ │ │ │ └── types.ts │ │ │ │ │ ├── prompt-editor/ │ │ │ │ │ │ ├── editor.tsx │ │ │ │ │ │ ├── extensions/ │ │ │ │ │ │ │ ├── jinja.tsx │ │ │ │ │ │ │ ├── language-support.tsx │ │ │ │ │ │ │ └── markdown.tsx │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ ├── styles.css │ │ │ │ │ │ └── types.tsx │ │ │ │ │ ├── prompt-editor-with-inputs/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── prompt-editor-with-variables/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── sql-editor-with-variables/ │ │ │ │ │ │ ├── editor.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── type-selector/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ └── variable-selector/ │ │ │ │ │ ├── context.tsx │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── styles.css │ │ │ │ │ └── use-variable-tree.tsx │ │ │ │ ├── effects/ │ │ │ │ │ ├── auto-rename-ref/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── listen-ref-schema-change/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── listen-ref-value-change/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── provide-batch-input/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── provide-json-schema-outputs/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── sync-variable-title/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ └── validate-when-variable-sync/ │ │ │ │ │ └── index.ts │ │ │ │ ├── form-plugins/ │ │ │ │ │ ├── batch-outputs-plugin/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── infer-assign-plugin/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ └── infer-inputs-plugin/ │ │ │ │ │ └── index.ts │ │ │ │ ├── hooks/ │ │ │ │ │ ├── index.ts │ │ │ │ │ └── use-object-list/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── index.ts │ │ │ │ ├── plugins/ │ │ │ │ │ ├── disable-declaration-plugin/ │ │ │ │ │ │ ├── create-disable-declaration-plugin.ts │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── index.ts │ │ │ │ │ └── json-schema-preset/ │ │ │ │ │ ├── create-type-preset-plugin.tsx │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── react.tsx │ │ │ │ │ ├── type-definition/ │ │ │ │ │ │ ├── array.tsx │ │ │ │ │ │ ├── boolean.tsx │ │ │ │ │ │ ├── date-time.tsx │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ ├── integer.tsx │ │ │ │ │ │ ├── map.tsx │ │ │ │ │ │ ├── number.tsx │ │ │ │ │ │ ├── object.tsx │ │ │ │ │ │ └── string.tsx │ │ │ │ │ └── types.ts │ │ │ │ ├── shared/ │ │ │ │ │ ├── flow-value/ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── schema.ts │ │ │ │ │ │ ├── types.ts │ │ │ │ │ │ └── utils.ts │ │ │ │ │ ├── format-legacy-refs/ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── readme.md │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── inject-material/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── lazy-suspense/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ └── polyfill-create-root/ │ │ │ │ │ └── index.tsx │ │ │ │ └── validate/ │ │ │ │ ├── index.ts │ │ │ │ └── validate-flow-value/ │ │ │ │ └── index.tsx │ │ │ ├── tsconfig.json │ │ │ ├── vitest.config.ts │ │ │ └── vitest.setup.ts │ │ └── type-editor/ │ │ ├── eslint.config.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── components/ │ │ │ │ ├── feedback/ │ │ │ │ │ ├── feedback.tsx │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── style.ts │ │ │ │ │ └── types.ts │ │ │ │ ├── index.ts │ │ │ │ ├── type-editor/ │ │ │ │ │ ├── body.tsx │ │ │ │ │ ├── cell.tsx │ │ │ │ │ ├── columns/ │ │ │ │ │ │ ├── default.tsx │ │ │ │ │ │ ├── description.tsx │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── key.tsx │ │ │ │ │ │ ├── operate.tsx │ │ │ │ │ │ ├── private.tsx │ │ │ │ │ │ ├── required.tsx │ │ │ │ │ │ ├── style.ts │ │ │ │ │ │ ├── type.tsx │ │ │ │ │ │ └── value.tsx │ │ │ │ │ ├── common.ts │ │ │ │ │ ├── drop-tip.tsx │ │ │ │ │ ├── error.tsx │ │ │ │ │ ├── formatter/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── header.tsx │ │ │ │ │ ├── hooks/ │ │ │ │ │ │ ├── active-pos.ts │ │ │ │ │ │ ├── blink.ts │ │ │ │ │ │ ├── disabled.ts │ │ │ │ │ │ ├── drag-drop.ts │ │ │ │ │ │ ├── editor-listener.tsx │ │ │ │ │ │ ├── error-cell.ts │ │ │ │ │ │ ├── formatter-value.ts │ │ │ │ │ │ ├── hot-key.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── key-visible.tsx │ │ │ │ │ │ ├── paste-data.ts │ │ │ │ │ │ └── type-edit.ts │ │ │ │ │ ├── indent.tsx │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── mode/ │ │ │ │ │ │ ├── declare-assign.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── type-definition.ts │ │ │ │ │ ├── style.ts │ │ │ │ │ ├── table.tsx │ │ │ │ │ ├── tool-bar.tsx │ │ │ │ │ ├── tools/ │ │ │ │ │ │ ├── create-by-data.tsx │ │ │ │ │ │ ├── index.module.less │ │ │ │ │ │ ├── style.ts │ │ │ │ │ │ └── undo-redo.tsx │ │ │ │ │ ├── type-editor.tsx │ │ │ │ │ ├── type.ts │ │ │ │ │ └── utils.ts │ │ │ │ └── type-selector/ │ │ │ │ ├── cascader-v2/ │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── style.ts │ │ │ │ │ ├── trigger.tsx │ │ │ │ │ ├── type-cascader.tsx │ │ │ │ │ └── type-search.tsx │ │ │ │ ├── hooks/ │ │ │ │ │ ├── focus-item.ts │ │ │ │ │ ├── hot-key.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── option-value.ts │ │ │ │ │ ├── root-types.ts │ │ │ │ │ └── use-hight-light.tsx │ │ │ │ ├── index.tsx │ │ │ │ ├── type.ts │ │ │ │ └── utils/ │ │ │ │ └── index.tsx │ │ │ ├── contexts/ │ │ │ │ └── index.tsx │ │ │ ├── index.ts │ │ │ ├── preset/ │ │ │ │ ├── index.tsx │ │ │ │ └── object-type-editor/ │ │ │ │ └── index.tsx │ │ │ ├── services/ │ │ │ │ ├── clipboard-service.ts │ │ │ │ ├── index.tsx │ │ │ │ ├── shortcut-service.ts │ │ │ │ ├── type-editor-service.ts │ │ │ │ ├── type-operation-service.ts │ │ │ │ ├── type-registry-manager.ts │ │ │ │ └── utils.ts │ │ │ ├── type-registry/ │ │ │ │ ├── array.tsx │ │ │ │ ├── boolean.tsx │ │ │ │ ├── index.ts │ │ │ │ ├── integer.tsx │ │ │ │ ├── number.tsx │ │ │ │ ├── object.tsx │ │ │ │ └── string.tsx │ │ │ ├── types/ │ │ │ │ ├── index.ts │ │ │ │ ├── registry.ts │ │ │ │ └── type-editor.ts │ │ │ └── utils/ │ │ │ ├── index.ts │ │ │ ├── monitor-data/ │ │ │ │ ├── index.ts │ │ │ │ ├── monitor-data.ts │ │ │ │ └── use-monitor-data.ts │ │ │ └── registry-adapter.tsx │ │ ├── tsconfig.json │ │ ├── vitest.config.ts │ │ └── vitest.setup.ts │ ├── node-engine/ │ │ ├── form/ │ │ │ ├── __tests__/ │ │ │ │ ├── create-form.test.ts │ │ │ │ ├── field-array-model.test.ts │ │ │ │ ├── field-model.test.ts │ │ │ │ ├── form-model.test.ts │ │ │ │ ├── glob.test.ts │ │ │ │ ├── object.test.ts │ │ │ │ ├── path.test.ts │ │ │ │ ├── to-field-array.test.ts │ │ │ │ ├── to-field.test.ts │ │ │ │ ├── to-form.test.ts │ │ │ │ ├── utils.test.ts │ │ │ │ └── validate.test.ts │ │ │ ├── eslint.config.js │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── constants.ts │ │ │ │ ├── core/ │ │ │ │ │ ├── create-form.ts │ │ │ │ │ ├── field-array-model.ts │ │ │ │ │ ├── field-model.ts │ │ │ │ │ ├── form-model.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── path.ts │ │ │ │ │ ├── store.ts │ │ │ │ │ ├── to-field-array.ts │ │ │ │ │ ├── to-field.ts │ │ │ │ │ ├── to-form.ts │ │ │ │ │ └── utils.ts │ │ │ │ ├── index.ts │ │ │ │ ├── react/ │ │ │ │ │ ├── context.ts │ │ │ │ │ ├── field-array.tsx │ │ │ │ │ ├── field.tsx │ │ │ │ │ ├── form.tsx │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── use-current-field-state.ts │ │ │ │ │ ├── use-current-field.ts │ │ │ │ │ ├── use-field-validate.ts │ │ │ │ │ ├── use-field.ts │ │ │ │ │ ├── use-form-state.ts │ │ │ │ │ ├── use-form.ts │ │ │ │ │ ├── use-watch.ts │ │ │ │ │ └── utils.ts │ │ │ │ ├── types/ │ │ │ │ │ ├── common.ts │ │ │ │ │ ├── field.ts │ │ │ │ │ ├── form.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── validate.ts │ │ │ │ └── utils/ │ │ │ │ ├── dom.ts │ │ │ │ ├── event.ts │ │ │ │ ├── glob.ts │ │ │ │ ├── index.ts │ │ │ │ ├── object.ts │ │ │ │ └── validate.ts │ │ │ ├── tsconfig.json │ │ │ └── vitest.config.ts │ │ ├── form-core/ │ │ │ ├── __tests__/ │ │ │ │ ├── form-path-service.test.ts │ │ │ │ └── form.test.ts │ │ │ ├── eslint.config.js │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── client/ │ │ │ │ │ ├── create-node-container-modules.ts │ │ │ │ │ ├── create-node-entity-datas.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── node-material-client.ts │ │ │ │ │ └── node-render.tsx │ │ │ │ ├── error/ │ │ │ │ │ ├── client.ts │ │ │ │ │ ├── error-container-module.ts │ │ │ │ │ ├── error-node-contribution.ts │ │ │ │ │ ├── flow-node-error-data.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── renders/ │ │ │ │ │ │ ├── default-error-render.tsx │ │ │ │ │ │ ├── error-render.tsx │ │ │ │ │ │ └── index.ts │ │ │ │ │ └── types.ts │ │ │ │ ├── form/ │ │ │ │ │ ├── abilities/ │ │ │ │ │ │ ├── decorator-ability/ │ │ │ │ │ │ │ ├── decorator-ability.ts │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ └── types.ts │ │ │ │ │ │ ├── default-ability/ │ │ │ │ │ │ │ ├── default-ability.ts │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ └── types.ts │ │ │ │ │ │ ├── effect-ability/ │ │ │ │ │ │ │ ├── effect-ability.ts │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ └── types.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── setter-ability/ │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ ├── setter-ability.ts │ │ │ │ │ │ │ └── types.ts │ │ │ │ │ │ ├── validation-ability/ │ │ │ │ │ │ │ ├── form-validate.types.ts │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ ├── types.ts │ │ │ │ │ │ │ └── validation-ability.ts │ │ │ │ │ │ └── visibility-ability/ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── visibility-ability.ts │ │ │ │ │ ├── client/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── flow-node-form-data.ts │ │ │ │ │ ├── form-contribution.ts │ │ │ │ │ ├── form-core-container-module.ts │ │ │ │ │ ├── form-node-contribution.ts │ │ │ │ │ ├── form-render.tsx │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── models/ │ │ │ │ │ │ ├── form-ability-extension-registry.ts │ │ │ │ │ │ ├── form-item-ability.ts │ │ │ │ │ │ ├── form-item-material-context.ts │ │ │ │ │ │ ├── form-item.ts │ │ │ │ │ │ ├── form-meta.ts │ │ │ │ │ │ ├── form-model.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── services/ │ │ │ │ │ │ ├── form-context-maker.ts │ │ │ │ │ │ ├── form-manager.ts │ │ │ │ │ │ ├── form-path-service.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ └── types/ │ │ │ │ │ ├── form-ability.types.ts │ │ │ │ │ ├── form-meta.types.ts │ │ │ │ │ ├── form-model.types.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── index.ts │ │ │ │ ├── node/ │ │ │ │ │ ├── core-materials.ts │ │ │ │ │ ├── core-plugins.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── node-container-module.ts │ │ │ │ │ ├── node-contribution.ts │ │ │ │ │ ├── node-engine-context.ts │ │ │ │ │ ├── node-engine.ts │ │ │ │ │ ├── node-manager.ts │ │ │ │ │ └── types.ts │ │ │ │ └── node-react/ │ │ │ │ ├── context/ │ │ │ │ │ ├── index.ts │ │ │ │ │ └── node-engine-react-context.ts │ │ │ │ ├── hooks/ │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── use-form-Item.ts │ │ │ │ │ └── use-node-engine-context.ts │ │ │ │ └── index.ts │ │ │ ├── tsconfig.json │ │ │ ├── vitest.config.ts │ │ │ └── vitest.setup.ts │ │ └── node/ │ │ ├── __tests__/ │ │ │ ├── form-effects.test.ts │ │ │ ├── form-model-v2.test.ts │ │ │ ├── form-plugins.test.ts │ │ │ └── glob.test.ts │ │ ├── eslint.config.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── form-model-v2.ts │ │ │ ├── form-plugin.ts │ │ │ ├── form-render.tsx │ │ │ ├── get-node-form.tsx │ │ │ ├── helpers.ts │ │ │ ├── hooks.ts │ │ │ ├── index.ts │ │ │ ├── types.ts │ │ │ └── utils.ts │ │ ├── tsconfig.json │ │ ├── vitest.config.ts │ │ └── vitest.setup.ts │ ├── plugins/ │ │ ├── background-plugin/ │ │ │ ├── eslint.config.js │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── background-layer.tsx │ │ │ │ ├── create-background-plugin.ts │ │ │ │ └── index.ts │ │ │ ├── tsconfig.json │ │ │ ├── vitest.config.ts │ │ │ └── vitest.setup.ts │ │ ├── export-plugin/ │ │ │ ├── eslint.config.js │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── constant.ts │ │ │ │ ├── create-plugin.ts │ │ │ │ ├── download-service/ │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── service.ts │ │ │ │ │ └── type.ts │ │ │ │ ├── export-image-service/ │ │ │ │ │ ├── constant.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── service.ts │ │ │ │ │ ├── type.ts │ │ │ │ │ └── utils.ts │ │ │ │ ├── index.ts │ │ │ │ └── type.ts │ │ │ ├── tsconfig.json │ │ │ ├── vitest.config.ts │ │ │ └── vitest.setup.ts │ │ ├── fixed-drag-plugin/ │ │ │ ├── eslint.config.js │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── create-fixed-drag-plugin.ts │ │ │ │ ├── hooks/ │ │ │ │ │ └── use-start-drag-node.ts │ │ │ │ └── index.ts │ │ │ ├── tsconfig.json │ │ │ ├── vitest.config.ts │ │ │ └── vitest.setup.ts │ │ ├── fixed-history-plugin/ │ │ │ ├── eslint.config.js │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── create-fixed-history-plugin.ts │ │ │ │ ├── fixed-history-config.ts │ │ │ │ ├── fixed-history-registers.ts │ │ │ │ ├── index.ts │ │ │ │ ├── operation-metas/ │ │ │ │ │ ├── add-block.ts │ │ │ │ │ ├── add-child-node.ts │ │ │ │ │ ├── add-from-node.ts │ │ │ │ │ ├── add-node.ts │ │ │ │ │ ├── add-nodes.ts │ │ │ │ │ ├── base.ts │ │ │ │ │ ├── create-group.ts │ │ │ │ │ ├── delete-block.ts │ │ │ │ │ ├── delete-child-node.ts │ │ │ │ │ ├── delete-from-node.ts │ │ │ │ │ ├── delete-node.ts │ │ │ │ │ ├── delete-nodes.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── move-block.ts │ │ │ │ │ ├── move-child-nodes.ts │ │ │ │ │ ├── move-nodes.ts │ │ │ │ │ └── ungroup.ts │ │ │ │ ├── services/ │ │ │ │ │ ├── fixed-history-form-data-service.ts │ │ │ │ │ ├── fixed-history-operation-service.ts │ │ │ │ │ ├── fixed-history-service.ts │ │ │ │ │ └── index.ts │ │ │ │ └── types.ts │ │ │ ├── tsconfig.json │ │ │ ├── vitest.config.ts │ │ │ └── vitest.setup.ts │ │ ├── free-auto-layout-plugin/ │ │ │ ├── eslint.config.js │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── create-auto-layout-plugin.tsx │ │ │ │ ├── dagre-layout/ │ │ │ │ │ ├── acyclic.ts │ │ │ │ │ ├── graph.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── layout.ts │ │ │ │ │ ├── order.ts │ │ │ │ │ ├── rank/ │ │ │ │ │ │ ├── feasible-tree.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── longest-path.ts │ │ │ │ │ │ ├── network-simplex.ts │ │ │ │ │ │ └── normalize-ranks.ts │ │ │ │ │ └── type.ts │ │ │ │ ├── dagre-lib/ │ │ │ │ │ ├── acyclic.js │ │ │ │ │ ├── add-border-segments.js │ │ │ │ │ ├── coordinate-system.js │ │ │ │ │ ├── data/ │ │ │ │ │ │ └── list.js │ │ │ │ │ ├── debug.js │ │ │ │ │ ├── greedy-fas.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── layout.js │ │ │ │ │ ├── nesting-graph.js │ │ │ │ │ ├── normalize.js │ │ │ │ │ ├── order/ │ │ │ │ │ │ ├── add-subgraph-constraints.js │ │ │ │ │ │ ├── barycenter.js │ │ │ │ │ │ ├── build-layer-graph.js │ │ │ │ │ │ ├── cross-count.js │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ ├── init-order.js │ │ │ │ │ │ ├── resolve-conflicts.js │ │ │ │ │ │ ├── sort-subgraph.js │ │ │ │ │ │ └── sort.js │ │ │ │ │ ├── parent-dummy-chains.js │ │ │ │ │ ├── position/ │ │ │ │ │ │ ├── bk.js │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── rank/ │ │ │ │ │ │ ├── feasible-tree.js │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ ├── network-simplex.js │ │ │ │ │ │ └── util.js │ │ │ │ │ ├── util.js │ │ │ │ │ └── version.js │ │ │ │ ├── index.ts │ │ │ │ ├── layout/ │ │ │ │ │ ├── constant.ts │ │ │ │ │ ├── dagre.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── layout.ts │ │ │ │ │ ├── position.ts │ │ │ │ │ ├── store.ts │ │ │ │ │ └── type.ts │ │ │ │ ├── services.ts │ │ │ │ └── type.ts │ │ │ ├── tsconfig.json │ │ │ ├── vitest.config.ts │ │ │ └── vitest.setup.ts │ │ ├── free-container-plugin/ │ │ │ ├── eslint.config.js │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── index.ts │ │ │ │ ├── node-into-container/ │ │ │ │ │ ├── constant.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── plugin.tsx │ │ │ │ │ ├── service.ts │ │ │ │ │ └── type.ts │ │ │ │ ├── sub-canvas/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── background/ │ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ │ └── style.ts │ │ │ │ │ │ ├── border/ │ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ │ └── style.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── render/ │ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ │ └── style.ts │ │ │ │ │ │ └── tips/ │ │ │ │ │ │ ├── global-store.ts │ │ │ │ │ │ ├── icon-close.tsx │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ ├── is-mac-os.ts │ │ │ │ │ │ ├── style.ts │ │ │ │ │ │ └── use-control.ts │ │ │ │ │ ├── hooks/ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── use-node-size.ts │ │ │ │ │ │ └── use-sync-node-render-size.ts │ │ │ │ │ └── index.ts │ │ │ │ └── utils/ │ │ │ │ ├── adjust-sub-node-position.ts │ │ │ │ ├── get-collision-transform.ts │ │ │ │ ├── get-container-transforms.ts │ │ │ │ ├── index.ts │ │ │ │ ├── is-container.ts │ │ │ │ ├── is-point-in-rect.ts │ │ │ │ ├── is-rect-intersects.ts │ │ │ │ └── next-frame.ts │ │ │ ├── tsconfig.json │ │ │ ├── vitest.config.ts │ │ │ └── vitest.setup.ts │ │ ├── free-group-plugin/ │ │ │ ├── eslint.config.js │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── constant.ts │ │ │ │ ├── create-free-group-plugin.tsx │ │ │ │ ├── group-node.tsx │ │ │ │ ├── index.ts │ │ │ │ ├── shortcuts/ │ │ │ │ │ ├── group.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── ungroup.ts │ │ │ │ ├── type.ts │ │ │ │ ├── utils.ts │ │ │ │ └── workflow-group-service.ts │ │ │ ├── tsconfig.json │ │ │ ├── vitest.config.ts │ │ │ └── vitest.setup.ts │ │ ├── free-history-plugin/ │ │ │ ├── eslint.config.js │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── changes/ │ │ │ │ │ ├── add-line-change.ts │ │ │ │ │ ├── add-node-change.ts │ │ │ │ │ ├── change-line-data.ts │ │ │ │ │ ├── delete-line-change.ts │ │ │ │ │ ├── delete-node-change.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── create-free-history-plugin.ts │ │ │ │ ├── free-history-config.ts │ │ │ │ ├── free-history-manager.ts │ │ │ │ ├── free-history-registers.ts │ │ │ │ ├── handlers/ │ │ │ │ │ ├── change-content-handler.ts │ │ │ │ │ └── drag-nodes-handler.ts │ │ │ │ ├── history-entity-manager.ts │ │ │ │ ├── hooks/ │ │ │ │ │ ├── index.ts │ │ │ │ │ └── use-undo-redo.tsx │ │ │ │ ├── index.ts │ │ │ │ ├── operation-metas/ │ │ │ │ │ ├── add-line.ts │ │ │ │ │ ├── add-node.ts │ │ │ │ │ ├── base.ts │ │ │ │ │ ├── change-line-data.ts │ │ │ │ │ ├── delete-line.ts │ │ │ │ │ ├── delete-node.ts │ │ │ │ │ ├── drag-nodes.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── move-child-nodes.ts │ │ │ │ │ └── reset-layout.ts │ │ │ │ └── types.ts │ │ │ ├── tsconfig.json │ │ │ ├── vitest.config.ts │ │ │ └── vitest.setup.ts │ │ ├── free-hover-plugin/ │ │ │ ├── eslint.config.js │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── create-free-hover-plugin.ts │ │ │ │ ├── hover-layer.tsx │ │ │ │ ├── index.ts │ │ │ │ └── selection-utils.ts │ │ │ ├── tsconfig.json │ │ │ ├── vitest.config.ts │ │ │ └── vitest.setup.ts │ │ ├── free-lines-plugin/ │ │ │ ├── eslint.config.js │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── __tests__/ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ └── bezier-controls.spec.ts.snap │ │ │ │ │ └── bezier-controls.spec.ts │ │ │ │ ├── components/ │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── workflow-line-render/ │ │ │ │ │ │ ├── arrow.tsx │ │ │ │ │ │ ├── index.style.ts │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── line-svg.tsx │ │ │ │ │ └── workflow-port-render/ │ │ │ │ │ ├── cross-hair.tsx │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── style.ts │ │ │ │ ├── constants/ │ │ │ │ │ ├── lines.ts │ │ │ │ │ └── points.ts │ │ │ │ ├── contributions/ │ │ │ │ │ ├── bezier/ │ │ │ │ │ │ ├── bezier-controls.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── fold/ │ │ │ │ │ │ ├── fold-line.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── straight/ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── point-on-line.ts │ │ │ │ │ └── utils.ts │ │ │ │ ├── create-free-lines-plugin.ts │ │ │ │ ├── index.ts │ │ │ │ ├── layer/ │ │ │ │ │ ├── index.ts │ │ │ │ │ └── workflow-lines-layer.tsx │ │ │ │ ├── type.ts │ │ │ │ └── types/ │ │ │ │ └── arrow-renderer.ts │ │ │ ├── tsconfig.json │ │ │ ├── vitest.config.ts │ │ │ └── vitest.setup.ts │ │ ├── free-node-panel-plugin/ │ │ │ ├── eslint.config.js │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── component.tsx │ │ │ │ ├── create-plugin.ts │ │ │ │ ├── index.ts │ │ │ │ ├── layer.tsx │ │ │ │ ├── service.ts │ │ │ │ ├── type.ts │ │ │ │ └── utils/ │ │ │ │ ├── adjust-node-position.ts │ │ │ │ ├── build-line.ts │ │ │ │ ├── get-container-node.ts │ │ │ │ ├── get-port-box.ts │ │ │ │ ├── get-sub-nodes.ts │ │ │ │ ├── greater-or-less.ts │ │ │ │ ├── index.ts │ │ │ │ ├── is-container.ts │ │ │ │ ├── rect-distance.ts │ │ │ │ ├── sub-nodes-auto-offset.ts │ │ │ │ ├── sub-position-offset.ts │ │ │ │ ├── update-sub-nodes-position.ts │ │ │ │ └── wait-node-render.ts │ │ │ ├── tsconfig.json │ │ │ ├── vitest.config.ts │ │ │ └── vitest.setup.ts │ │ ├── free-snap-plugin/ │ │ │ ├── eslint.config.js │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── constant.ts │ │ │ │ ├── create-plugin.ts │ │ │ │ ├── index.ts │ │ │ │ ├── layer.tsx │ │ │ │ ├── service.ts │ │ │ │ ├── type.ts │ │ │ │ └── utils.ts │ │ │ ├── tsconfig.json │ │ │ ├── vitest.config.ts │ │ │ └── vitest.setup.ts │ │ ├── free-stack-plugin/ │ │ │ ├── __tests__/ │ │ │ │ ├── computing.test.ts │ │ │ │ ├── manager.test.ts │ │ │ │ ├── type.mock.ts │ │ │ │ └── utils.mock.ts │ │ │ ├── eslint.config.js │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── constant.ts │ │ │ │ ├── create-free-stack-plugin.ts │ │ │ │ ├── index.ts │ │ │ │ ├── manager.ts │ │ │ │ ├── stacking-computing.ts │ │ │ │ └── type.ts │ │ │ ├── tsconfig.json │ │ │ ├── vitest.config.ts │ │ │ └── vitest.setup.ts │ │ ├── group-plugin/ │ │ │ ├── eslint.config.js │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── components/ │ │ │ │ │ ├── group-box.tsx │ │ │ │ │ ├── group-render.tsx │ │ │ │ │ ├── hooks.ts │ │ │ │ │ └── index.tsx │ │ │ │ ├── constant.ts │ │ │ │ ├── create-group-plugin.tsx │ │ │ │ ├── group-node-register.tsx │ │ │ │ ├── groups-layer.tsx │ │ │ │ ├── index.ts │ │ │ │ ├── registers/ │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── register-clean-groups.ts │ │ │ │ │ ├── register-group-node.ts │ │ │ │ │ ├── register-layer.ts │ │ │ │ │ └── register-render.tsx │ │ │ │ └── type.ts │ │ │ ├── tsconfig.json │ │ │ ├── vitest.config.ts │ │ │ └── vitest.setup.ts │ │ ├── history-node-plugin/ │ │ │ ├── __tests__/ │ │ │ │ ├── create-container.ts │ │ │ │ └── form.test.ts │ │ │ ├── eslint.config.js │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── create-history-node-plugin.ts │ │ │ │ ├── history-node-registers.ts │ │ │ │ ├── index.ts │ │ │ │ ├── operation-metas/ │ │ │ │ │ ├── change-form-values.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── types.ts │ │ │ │ └── utils/ │ │ │ │ └── index.ts │ │ │ ├── tsconfig.json │ │ │ ├── vitest.config.ts │ │ │ └── vitest.setup.ts │ │ ├── i18n-plugin/ │ │ │ ├── eslint.config.js │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── create-i18n-plugin.ts │ │ │ │ └── index.ts │ │ │ ├── tsconfig.json │ │ │ ├── vitest.config.ts │ │ │ └── vitest.setup.ts │ │ ├── materials-plugin/ │ │ │ ├── eslint.config.js │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── create-materials-plugin.ts │ │ │ │ └── index.ts │ │ │ ├── tsconfig.json │ │ │ ├── vitest.config.ts │ │ │ └── vitest.setup.ts │ │ ├── minimap-plugin/ │ │ │ ├── eslint.config.js │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── component.tsx │ │ │ │ ├── constant.ts │ │ │ │ ├── create-plugin.ts │ │ │ │ ├── draw.ts │ │ │ │ ├── index.ts │ │ │ │ ├── layer.tsx │ │ │ │ ├── service.ts │ │ │ │ └── type.ts │ │ │ ├── tsconfig.json │ │ │ ├── vitest.config.ts │ │ │ └── vitest.setup.ts │ │ ├── node-core-plugin/ │ │ │ ├── eslint.config.js │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── create-node-core-plugin.ts │ │ │ │ ├── form-node-contribution.ts │ │ │ │ ├── form-render.tsx │ │ │ │ ├── index.ts │ │ │ │ ├── types.ts │ │ │ │ └── utils.ts │ │ │ ├── tsconfig.json │ │ │ ├── vitest.config.ts │ │ │ └── vitest.setup.ts │ │ ├── node-variable-plugin/ │ │ │ ├── eslint.config.js │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── components/ │ │ │ │ │ ├── PrivateScopeProvider.tsx │ │ │ │ │ └── PublicScopeProvider.tsx │ │ │ │ ├── create-node-variable-plugin.ts │ │ │ │ ├── form-v2/ │ │ │ │ │ ├── create-provider-effect.ts │ │ │ │ │ └── create-variable-provider-plugin.ts │ │ │ │ ├── index.ts │ │ │ │ ├── types.ts │ │ │ │ └── with-node-variables.tsx │ │ │ ├── tsconfig.json │ │ │ ├── vitest.config.ts │ │ │ └── vitest.setup.ts │ │ ├── panel-manager-plugin/ │ │ │ ├── eslint.config.js │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── components/ │ │ │ │ │ ├── panel-layer/ │ │ │ │ │ │ ├── css.ts │ │ │ │ │ │ ├── docked-panel-layer.tsx │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── panel-layer.tsx │ │ │ │ │ │ └── panel.tsx │ │ │ │ │ └── resize-bar/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── contexts.ts │ │ │ │ ├── create-panel-manager-plugin.ts │ │ │ │ ├── hooks/ │ │ │ │ │ ├── use-global-css.ts │ │ │ │ │ ├── use-panel-manager.ts │ │ │ │ │ └── use-panel.ts │ │ │ │ ├── index.ts │ │ │ │ ├── services/ │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── panel-config.ts │ │ │ │ │ ├── panel-factory.ts │ │ │ │ │ ├── panel-layer.ts │ │ │ │ │ ├── panel-manager.ts │ │ │ │ │ └── panel-restore.ts │ │ │ │ ├── types.ts │ │ │ │ └── utils.ts │ │ │ └── tsconfig.json │ │ ├── redux-devtool-plugin/ │ │ │ ├── eslint.config.js │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── connectors/ │ │ │ │ │ ├── base.ts │ │ │ │ │ ├── ecs-connector.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── variable-connector.ts │ │ │ │ ├── create-redux-devtool-plugin.ts │ │ │ │ └── index.ts │ │ │ ├── tsconfig.json │ │ │ ├── vitest.config.ts │ │ │ └── vitest.setup.ts │ │ ├── select-box-plugin/ │ │ │ ├── eslint.config.js │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── create-select-box-plugin.ts │ │ │ │ └── index.ts │ │ │ ├── tsconfig.json │ │ │ ├── vitest.config.ts │ │ │ └── vitest.setup.ts │ │ ├── shortcuts-plugin/ │ │ │ ├── eslint.config.js │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── create-shortcuts-plugin.ts │ │ │ │ ├── index.ts │ │ │ │ ├── layers/ │ │ │ │ │ ├── index.ts │ │ │ │ │ └── shortcuts-layer.tsx │ │ │ │ ├── shortcuts-contribution.ts │ │ │ │ └── shortcuts-utils.ts │ │ │ ├── tsconfig.json │ │ │ ├── vitest.config.ts │ │ │ └── vitest.setup.ts │ │ ├── test-run-plugin/ │ │ │ ├── eslint.config.js │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── create-test-run-plugin.ts │ │ │ │ ├── form-engine/ │ │ │ │ │ ├── contexts.ts │ │ │ │ │ ├── fields/ │ │ │ │ │ │ ├── create-field.tsx │ │ │ │ │ │ ├── general-field.tsx │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── object-field.tsx │ │ │ │ │ │ ├── reactive-field.tsx │ │ │ │ │ │ ├── recursion-field.tsx │ │ │ │ │ │ └── schema-field.tsx │ │ │ │ │ ├── form/ │ │ │ │ │ │ ├── form.tsx │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── hooks/ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── use-create-form.ts │ │ │ │ │ │ ├── use-field.ts │ │ │ │ │ │ └── use-form.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── model/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── types.ts │ │ │ │ │ └── utils.ts │ │ │ │ ├── index.ts │ │ │ │ ├── reactive/ │ │ │ │ │ ├── hooks/ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── use-create-form.ts │ │ │ │ │ │ └── use-test-run-service.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── services/ │ │ │ │ │ ├── config.ts │ │ │ │ │ ├── form/ │ │ │ │ │ │ ├── factory.ts │ │ │ │ │ │ ├── form.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── manager.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── pipeline/ │ │ │ │ │ │ ├── factory.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── pipeline.ts │ │ │ │ │ │ ├── plugin.ts │ │ │ │ │ │ └── tap.ts │ │ │ │ │ ├── store.ts │ │ │ │ │ └── test-run.ts │ │ │ │ └── types.ts │ │ │ └── tsconfig.json │ │ └── variable-plugin/ │ │ ├── eslint.config.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── create-variable-plugin.ts │ │ │ └── index.ts │ │ ├── tsconfig.json │ │ ├── vitest.config.ts │ │ └── vitest.setup.ts │ ├── runtime/ │ │ ├── interface/ │ │ │ ├── eslint.config.js │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── api/ │ │ │ │ │ ├── constant.ts │ │ │ │ │ ├── define.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── schema.ts │ │ │ │ │ ├── server-info/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── task-cancel/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── task-report/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── task-result/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── task-run/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── task-validate/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ └── type.ts │ │ │ │ ├── client/ │ │ │ │ │ └── index.ts │ │ │ │ ├── index.ts │ │ │ │ ├── node/ │ │ │ │ │ ├── break/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── code/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── condition/ │ │ │ │ │ │ ├── constant.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── constant.ts │ │ │ │ │ ├── continue/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── end/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── http/ │ │ │ │ │ │ ├── constant.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── llm/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── loop/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ └── start/ │ │ │ │ │ └── index.ts │ │ │ │ ├── runtime/ │ │ │ │ │ ├── base/ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── inputs-outputs.ts │ │ │ │ │ │ ├── invoke.ts │ │ │ │ │ │ └── value-object.ts │ │ │ │ │ ├── cache/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── container/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── context/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── document/ │ │ │ │ │ │ ├── document.ts │ │ │ │ │ │ ├── edge.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── node.ts │ │ │ │ │ │ └── port.ts │ │ │ │ │ ├── engine/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── executor/ │ │ │ │ │ │ ├── executor.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── node-executor.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── io-center/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── message/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── reporter/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── snapshot/ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── snapshot-center.ts │ │ │ │ │ │ └── snapshot.ts │ │ │ │ │ ├── state/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── status/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── task/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── validation/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ └── variable/ │ │ │ │ │ └── index.ts │ │ │ │ └── schema/ │ │ │ │ ├── constant.ts │ │ │ │ ├── edge.ts │ │ │ │ ├── group.ts │ │ │ │ ├── index.ts │ │ │ │ ├── json-schema.ts │ │ │ │ ├── node-meta.ts │ │ │ │ ├── node.ts │ │ │ │ ├── value.ts │ │ │ │ ├── workflow.ts │ │ │ │ └── xy.ts │ │ │ └── tsconfig.json │ │ ├── js-core/ │ │ │ ├── eslint.config.js │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── api/ │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── task-cancel.ts │ │ │ │ │ ├── task-report.ts │ │ │ │ │ ├── task-result.ts │ │ │ │ │ ├── task-run.ts │ │ │ │ │ └── task-validate.ts │ │ │ │ ├── application/ │ │ │ │ │ ├── index.ts │ │ │ │ │ └── workflow.ts │ │ │ │ ├── domain/ │ │ │ │ │ ├── __tests__/ │ │ │ │ │ │ ├── config.ts │ │ │ │ │ │ ├── executor/ │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ └── llm.ts │ │ │ │ │ │ ├── schemas/ │ │ │ │ │ │ │ ├── basic.test.ts │ │ │ │ │ │ │ ├── basic.ts │ │ │ │ │ │ │ ├── branch-two-layers.test.ts │ │ │ │ │ │ │ ├── branch-two-layers.ts │ │ │ │ │ │ │ ├── branch.test.ts │ │ │ │ │ │ │ ├── branch.ts │ │ │ │ │ │ │ ├── code.test.ts │ │ │ │ │ │ │ ├── code.ts │ │ │ │ │ │ │ ├── end-constant.test.ts │ │ │ │ │ │ │ ├── end-constant.ts │ │ │ │ │ │ │ ├── global-variable.test.ts │ │ │ │ │ │ │ ├── global-variable.ts │ │ │ │ │ │ │ ├── http-real.test.ts │ │ │ │ │ │ │ ├── http.test.ts │ │ │ │ │ │ │ ├── http.ts │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ ├── llm-real.test.ts │ │ │ │ │ │ │ ├── llm-real.ts │ │ │ │ │ │ │ ├── loop-break-continue.test.ts │ │ │ │ │ │ │ ├── loop-break-continue.ts │ │ │ │ │ │ │ ├── loop.test.ts │ │ │ │ │ │ │ ├── loop.ts │ │ │ │ │ │ │ ├── start-default.test.ts │ │ │ │ │ │ │ ├── start-default.ts │ │ │ │ │ │ │ ├── two-llm.ts │ │ │ │ │ │ │ ├── validate-inputs.test.ts │ │ │ │ │ │ │ └── validate-inputs.ts │ │ │ │ │ │ ├── setup.ts │ │ │ │ │ │ └── utils/ │ │ │ │ │ │ ├── array-vo-data.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── snapshot.ts │ │ │ │ │ ├── cache/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── container/ │ │ │ │ │ │ ├── index.test.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── context/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── document/ │ │ │ │ │ │ ├── document/ │ │ │ │ │ │ │ ├── create-store.test.ts │ │ │ │ │ │ │ ├── create-store.ts │ │ │ │ │ │ │ ├── flat-schema.test.ts │ │ │ │ │ │ │ ├── flat-schema.ts │ │ │ │ │ │ │ ├── index.test.ts │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ ├── entity/ │ │ │ │ │ │ │ ├── edge/ │ │ │ │ │ │ │ │ ├── index.test.ts │ │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ ├── node/ │ │ │ │ │ │ │ │ ├── index.test.ts │ │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ │ └── port/ │ │ │ │ │ │ │ ├── index.test.ts │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── engine/ │ │ │ │ │ │ ├── index.test.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── executor/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── io-center/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── message/ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── message-center/ │ │ │ │ │ │ │ ├── index.test.ts │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ └── message-value-object/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── report/ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── report-value-object/ │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ └── reporter/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── snapshot/ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── snapshot-center/ │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ └── snapshot-entity/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── state/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── status/ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── status-center/ │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ └── status-entity/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── task/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── validation/ │ │ │ │ │ │ ├── index.test.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── validators/ │ │ │ │ │ │ ├── cycle-detection.test.ts │ │ │ │ │ │ ├── cycle-detection.ts │ │ │ │ │ │ ├── edge-source-target-exist.test.ts │ │ │ │ │ │ ├── edge-source-target-exist.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── schema-format.test.ts │ │ │ │ │ │ ├── schema-format.ts │ │ │ │ │ │ ├── start-end-node.test.ts │ │ │ │ │ │ └── start-end-node.ts │ │ │ │ │ └── variable/ │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── variable-store/ │ │ │ │ │ │ ├── index.test.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ └── variable-value-object/ │ │ │ │ │ └── index.ts │ │ │ │ ├── index.ts │ │ │ │ ├── infrastructure/ │ │ │ │ │ ├── index.ts │ │ │ │ │ └── utils/ │ │ │ │ │ ├── compare-node-groups.test.ts │ │ │ │ │ ├── compare-node-groups.ts │ │ │ │ │ ├── delay.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── json-schema-validator.test.ts │ │ │ │ │ ├── json-schema-validator.ts │ │ │ │ │ ├── runtime-type.test.ts │ │ │ │ │ ├── runtime-type.ts │ │ │ │ │ ├── traverse-nodes.test.ts │ │ │ │ │ ├── traverse-nodes.ts │ │ │ │ │ └── uuid.ts │ │ │ │ └── nodes/ │ │ │ │ ├── break/ │ │ │ │ │ └── index.ts │ │ │ │ ├── code/ │ │ │ │ │ └── index.ts │ │ │ │ ├── condition/ │ │ │ │ │ ├── handlers/ │ │ │ │ │ │ ├── array.ts │ │ │ │ │ │ ├── boolean.ts │ │ │ │ │ │ ├── datetime.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── map.ts │ │ │ │ │ │ ├── null.ts │ │ │ │ │ │ ├── number.ts │ │ │ │ │ │ ├── object.ts │ │ │ │ │ │ └── string.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── rules.ts │ │ │ │ │ └── type.ts │ │ │ │ ├── continue/ │ │ │ │ │ └── index.ts │ │ │ │ ├── empty/ │ │ │ │ │ └── index.ts │ │ │ │ ├── end/ │ │ │ │ │ └── index.ts │ │ │ │ ├── http/ │ │ │ │ │ └── index.ts │ │ │ │ ├── index.ts │ │ │ │ ├── llm/ │ │ │ │ │ └── index.ts │ │ │ │ ├── loop/ │ │ │ │ │ └── index.ts │ │ │ │ └── start/ │ │ │ │ └── index.ts │ │ │ ├── tsconfig.json │ │ │ └── vitest.config.ts │ │ └── nodejs/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── eslint.config.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── api/ │ │ │ │ ├── create-api.ts │ │ │ │ ├── index.ts │ │ │ │ ├── trpc.ts │ │ │ │ └── type.ts │ │ │ ├── config/ │ │ │ │ └── index.ts │ │ │ ├── index.ts │ │ │ └── server/ │ │ │ ├── context.ts │ │ │ ├── docs.ts │ │ │ ├── index.ts │ │ │ └── type.ts │ │ ├── tsconfig.json │ │ └── vitest.config.ts │ └── variable-engine/ │ ├── json-schema/ │ │ ├── eslint.config.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── base/ │ │ │ │ ├── base-type-manager.ts │ │ │ │ ├── index.ts │ │ │ │ └── types.ts │ │ │ ├── container-module.tsx │ │ │ ├── context.tsx │ │ │ ├── index.ts │ │ │ └── json-schema/ │ │ │ ├── index.ts │ │ │ ├── json-schema-type-manager.tsx │ │ │ ├── type-definition/ │ │ │ │ ├── array.tsx │ │ │ │ ├── boolean.tsx │ │ │ │ ├── date-time.tsx │ │ │ │ ├── default.tsx │ │ │ │ ├── index.ts │ │ │ │ ├── integer.tsx │ │ │ │ ├── map.tsx │ │ │ │ ├── number.tsx │ │ │ │ ├── object.tsx │ │ │ │ ├── string.tsx │ │ │ │ └── unknown.tsx │ │ │ ├── types.ts │ │ │ └── utils.ts │ │ ├── tsconfig.json │ │ ├── vitest.config.ts │ │ └── vitest.setup.ts │ ├── variable-core/ │ │ ├── __mocks__/ │ │ │ ├── container.ts │ │ │ ├── mock-chain.ts │ │ │ └── variables.ts │ │ ├── __tests__/ │ │ │ ├── ast/ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ ├── key-path-expression-v2.test.ts.snap │ │ │ │ │ ├── variable-declaration.test.ts.snap │ │ │ │ │ └── variable-with-initializer.test.ts.snap │ │ │ │ ├── ast-decorators.test.ts │ │ │ │ ├── key-path-expression-v2.test.ts │ │ │ │ ├── variable-declaration.test.ts │ │ │ │ ├── variable-match.test.ts │ │ │ │ ├── variable-throw-errors.test.ts │ │ │ │ ├── variable-type-equal.test.ts │ │ │ │ └── variable-with-initializer.test.ts │ │ │ ├── case-run-down/ │ │ │ │ ├── blockwise-python-expression.test.ts │ │ │ │ └── variable-rename-listener.test.ts │ │ │ └── scope/ │ │ │ └── variable-engine.test.ts │ │ ├── eslint.config.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── ast/ │ │ │ │ ├── ast-node.ts │ │ │ │ ├── ast-registers.ts │ │ │ │ ├── common/ │ │ │ │ │ ├── data-node.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── list-node.ts │ │ │ │ │ └── map-node.ts │ │ │ │ ├── declaration/ │ │ │ │ │ ├── base-variable-field.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── property.ts │ │ │ │ │ ├── variable-declaration-list.ts │ │ │ │ │ └── variable-declaration.ts │ │ │ │ ├── expression/ │ │ │ │ │ ├── base-expression.ts │ │ │ │ │ ├── enumerate-expression.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── keypath-expression.ts │ │ │ │ │ ├── legacy-keypath-expression.ts │ │ │ │ │ └── wrap-array-expression.ts │ │ │ │ ├── factory.ts │ │ │ │ ├── flags.ts │ │ │ │ ├── index.ts │ │ │ │ ├── match.ts │ │ │ │ ├── type/ │ │ │ │ │ ├── array.ts │ │ │ │ │ ├── base-type.ts │ │ │ │ │ ├── boolean.ts │ │ │ │ │ ├── custom-type.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── integer.ts │ │ │ │ │ ├── map.ts │ │ │ │ │ ├── number.ts │ │ │ │ │ ├── object.ts │ │ │ │ │ ├── string.ts │ │ │ │ │ └── union.ts │ │ │ │ ├── types.ts │ │ │ │ └── utils/ │ │ │ │ ├── expression.ts │ │ │ │ ├── helpers.ts │ │ │ │ ├── inversify.ts │ │ │ │ ├── observable.ts │ │ │ │ └── variable-field.ts │ │ │ ├── index.ts │ │ │ ├── providers.ts │ │ │ ├── react/ │ │ │ │ ├── context.tsx │ │ │ │ ├── hooks/ │ │ │ │ │ ├── use-available-variables.ts │ │ │ │ │ ├── use-output-variables.ts │ │ │ │ │ └── use-scope-available.ts │ │ │ │ └── index.tsx │ │ │ ├── scope/ │ │ │ │ ├── datas/ │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── scope-available-data.ts │ │ │ │ │ ├── scope-event-data.ts │ │ │ │ │ └── scope-output-data.ts │ │ │ │ ├── index.ts │ │ │ │ ├── scope-chain.ts │ │ │ │ ├── scope.ts │ │ │ │ ├── types.ts │ │ │ │ └── variable-table.ts │ │ │ ├── services/ │ │ │ │ ├── index.ts │ │ │ │ └── variable-field-key-rename-service.ts │ │ │ ├── utils/ │ │ │ │ ├── memo.ts │ │ │ │ └── toDisposable.tsx │ │ │ ├── variable-container-module.ts │ │ │ └── variable-engine.ts │ │ ├── tsconfig.json │ │ ├── vitest.config.ts │ │ └── vitest.setup.ts │ └── variable-layout/ │ ├── __mocks__/ │ │ ├── container.ts │ │ ├── fixed-layout-specs.ts │ │ ├── free-layout-specs.ts │ │ ├── run-fixed-layout-test.ts │ │ └── run-free-layout-test.ts │ ├── __tests__/ │ │ ├── __snapshots__/ │ │ │ ├── variable-fix-enable-global-scope.test.ts.snap │ │ │ ├── variable-fix-layout-filter-start-end.test.ts.snap │ │ │ ├── variable-fix-layout-group.test.ts.snap │ │ │ ├── variable-fix-layout-no-config.test.ts.snap │ │ │ ├── variable-fix-layout-transform-empty.test.ts.snap │ │ │ ├── variable-fix-layout.test.ts.snap │ │ │ ├── variable-free-enable-global-scope.test.ts.snap │ │ │ ├── variable-free-is-node-children-private.test.ts.snap │ │ │ ├── variable-free-layout-transform-empty.test.ts.snap │ │ │ └── variable-free-layout.test.ts.snap │ │ ├── variable-fix-enable-global-scope.test.ts │ │ ├── variable-fix-layout-filter-start-end.test.ts │ │ ├── variable-fix-layout-group.test.ts │ │ ├── variable-fix-layout-no-config.test.ts │ │ ├── variable-fix-layout-transform-empty.test.ts │ │ ├── variable-fix-layout.test.ts │ │ ├── variable-free-enable-global-scope.test.ts │ │ ├── variable-free-is-node-children-private.test.ts │ │ ├── variable-free-layout-transform-empty.test.ts │ │ └── variable-free-layout.test.ts │ ├── eslint.config.js │ ├── package.json │ ├── src/ │ │ ├── chains/ │ │ │ ├── fixed-layout-scope-chain.ts │ │ │ └── free-layout-scope-chain.ts │ │ ├── flow-node-variable-data.ts │ │ ├── index.ts │ │ ├── scopes/ │ │ │ └── global-scope.ts │ │ ├── services/ │ │ │ └── scope-chain-transform-service.ts │ │ ├── types.ts │ │ ├── utils.ts │ │ └── variable-chain-config.ts │ ├── tsconfig.json │ ├── vitest.config.ts │ └── vitest.setup.ts └── rush.json