gitextract_vbwzelad/ ├── .github/ │ ├── FUNDING.yml │ └── workflows/ │ └── main.yml ├── .gitignore ├── LICENSE ├── README.md ├── bin/ │ └── generate_python_classes_from_ts.sh ├── docker/ │ ├── README.md │ ├── docker-compose.it.yml │ ├── docker-compose.yml │ └── healthcheck.sh ├── integration_tests/ │ ├── .gitignore │ ├── package.json │ ├── tests/ │ │ ├── nodeProcessingOrder/ │ │ │ ├── nodeErrorTest.ts │ │ │ ├── nodeParallelExecutionDurationTest.ts │ │ │ ├── nodeWithChildrenTest.ts │ │ │ ├── nodeWithMultipleParentsTest.ts │ │ │ ├── nodesWithoutLinkTest.ts │ │ │ └── singleNodeTest.ts │ │ └── socketEvents/ │ │ ├── processFileEventTest.ts │ │ ├── runNodeEventTest.ts │ │ └── socketConnectionTest.ts │ ├── tsconfig.json │ └── utils/ │ ├── requestDatas.ts │ └── testHooks.ts └── packages/ ├── backend/ │ ├── .gitignore │ ├── Dockerfile │ ├── README.md │ ├── app/ │ │ ├── env_config.py │ │ ├── flask/ │ │ │ ├── app_routes/ │ │ │ │ ├── __init__.py │ │ │ │ ├── image_routes.py │ │ │ │ ├── node_routes.py │ │ │ │ ├── parameters_routes.py │ │ │ │ ├── static_routes.py │ │ │ │ └── upload_routes.py │ │ │ ├── decorators.py │ │ │ ├── flask_app.py │ │ │ ├── routes.py │ │ │ ├── socketio_init.py │ │ │ ├── sockets.py │ │ │ └── utils/ │ │ │ └── constants.py │ │ ├── llms/ │ │ │ └── utils/ │ │ │ └── max_token_for_model.py │ │ ├── log_config.py │ │ ├── processors/ │ │ │ ├── components/ │ │ │ │ ├── __init__.py │ │ │ │ ├── core/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── ai_data_splitter_processor.py │ │ │ │ │ ├── dall_e_prompt_processor.py │ │ │ │ │ ├── display_processor.py │ │ │ │ │ ├── file_processor.py │ │ │ │ │ ├── gpt_vision_processor.py │ │ │ │ │ ├── input_image_processor.py │ │ │ │ │ ├── input_processor.py │ │ │ │ │ ├── llm_prompt_processor.py │ │ │ │ │ ├── merge_processor.py │ │ │ │ │ ├── processor_type_name_utils.py │ │ │ │ │ ├── replicate_processor.py │ │ │ │ │ ├── stable_diffusion_stabilityai_prompt_processor.py │ │ │ │ │ ├── stable_video_diffusion_replicate.py │ │ │ │ │ ├── transition_processor.py │ │ │ │ │ ├── url_input_processor.py │ │ │ │ │ └── youtube_transcript_input_processor.py │ │ │ │ ├── extension/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── claude_anthropic_processor.py │ │ │ │ │ ├── deepseek_processor.py │ │ │ │ │ ├── document_to_text_processor.py │ │ │ │ │ ├── extension_processor.py │ │ │ │ │ ├── generate_number_processor.py │ │ │ │ │ ├── gpt_image_processor.py │ │ │ │ │ ├── http_get_processor.py │ │ │ │ │ ├── open_router_processor.py │ │ │ │ │ ├── openai_reasoning_processor.py │ │ │ │ │ ├── openai_text_to_speech_processor.py │ │ │ │ │ ├── replace_text_processor.py │ │ │ │ │ ├── stabilityai_generic_processor.py │ │ │ │ │ └── stable_diffusion_three_processor.py │ │ │ │ ├── model.py │ │ │ │ ├── node_config_builder.py │ │ │ │ ├── node_config_utils.py │ │ │ │ └── processor.py │ │ │ ├── context/ │ │ │ │ ├── processor_context.py │ │ │ │ └── processor_context_flask_request.py │ │ │ ├── exceptions.py │ │ │ ├── factory/ │ │ │ │ ├── processor_factory.py │ │ │ │ └── processor_factory_iter_modules.py │ │ │ ├── launcher/ │ │ │ │ ├── abstract_topological_processor_launcher.py │ │ │ │ ├── async_processor_launcher.py │ │ │ │ ├── basic_processor_launcher.py │ │ │ │ ├── event_type.py │ │ │ │ ├── processor_event.py │ │ │ │ ├── processor_launcher.py │ │ │ │ └── processor_launcher_event.py │ │ │ ├── observer/ │ │ │ │ ├── observer.py │ │ │ │ └── socketio_event_emitter.py │ │ │ └── utils/ │ │ │ └── retry_mixin.py │ │ ├── root_injector.py │ │ ├── storage/ │ │ │ ├── local_storage_strategy.py │ │ │ ├── s3_storage_strategy.py │ │ │ └── storage_strategy.py │ │ ├── tasks/ │ │ │ ├── green_pool_task_manager.py │ │ │ ├── single_thread_tasks/ │ │ │ │ └── browser/ │ │ │ │ ├── async_browser_task.py │ │ │ │ └── browser_task.py │ │ │ ├── task_exception.py │ │ │ ├── task_manager.py │ │ │ ├── task_utils.py │ │ │ └── thread_pool_task_manager.py │ │ └── utils/ │ │ ├── node_extension_utils.py │ │ ├── openapi_client.py │ │ ├── openapi_converter.py │ │ ├── openapi_reader.py │ │ ├── processor_utils.py │ │ ├── replicate_utils.py │ │ └── web_scrapping/ │ │ ├── async_browser_manager.py │ │ └── browser_manager.py │ ├── config.yaml │ ├── hooks/ │ │ └── hook-app.processors.py │ ├── pyproject.toml │ ├── requirements_windows.txt │ ├── resources/ │ │ ├── data/ │ │ │ └── openrouter_models.json │ │ └── openapi/ │ │ └── stabilityai.json │ ├── server.py │ └── tests/ │ ├── unit/ │ │ ├── test_processor_factory.py │ │ ├── test_processor_launcher.py │ │ └── test_stable_diffusion_stabilityai_prompt_processor.py │ └── utils/ │ ├── openai_mock_utils.py │ ├── processor_context_mock.py │ └── processor_factory_mock.py └── ui/ ├── .gitignore ├── .prettierignore ├── Dockerfile ├── README.md ├── index.html ├── jest.config.ts ├── nginx.conf ├── package.json ├── postcss.config.cjs ├── postcss.config.js ├── prettier.config.js ├── public/ │ ├── health │ ├── locales/ │ │ ├── en/ │ │ │ ├── aiActions.json │ │ │ ├── config.json │ │ │ ├── dialogs.json │ │ │ ├── flow.json │ │ │ ├── nodeHelp.json │ │ │ ├── tips.json │ │ │ ├── tour.json │ │ │ └── version.json │ │ └── fr/ │ │ ├── aiActions.json │ │ ├── config.json │ │ ├── dialogs.json │ │ ├── flow.json │ │ ├── nodeHelp.json │ │ ├── tips.json │ │ ├── tour.json │ │ └── version.json │ ├── robots.txt │ ├── samples/ │ │ └── intro.json │ └── site.webmanifest ├── src/ │ ├── App.tsx │ ├── Main.tsx │ ├── api/ │ │ ├── cache/ │ │ │ ├── cacheManager.ts │ │ │ └── withCache.ts │ │ ├── client.ts │ │ ├── nodes.ts │ │ ├── parameters.ts │ │ ├── replicateModels.ts │ │ └── uploadFile.ts │ ├── components/ │ │ ├── Flow.tsx │ │ ├── LoadingScreen.tsx │ │ ├── bars/ │ │ │ ├── Sidebar.tsx │ │ │ └── dnd-sidebar/ │ │ │ ├── DnDSidebar.tsx │ │ │ ├── DraggableNode.tsx │ │ │ ├── DraggableNodeWithSubnodes.tsx │ │ │ ├── GripIcon.tsx │ │ │ ├── Section.tsx │ │ │ └── types.ts │ │ ├── buttons/ │ │ │ ├── ButtonRunAll.tsx │ │ │ └── ConfigurationButton.tsx │ │ ├── edges/ │ │ │ └── buttonEdge.tsx │ │ ├── handles/ │ │ │ └── HandleWrapper.tsx │ │ ├── inputs/ │ │ │ └── InputWithButton.tsx │ │ ├── nodes/ │ │ │ ├── AIDataSplitterNode.tsx │ │ │ ├── DisplayNode.tsx │ │ │ ├── FileUploadNode.tsx │ │ │ ├── GenericNode.tsx │ │ │ ├── Node.styles.ts │ │ │ ├── NodeHelpPopover.tsx │ │ │ ├── NodeWrapper.tsx │ │ │ ├── ReplicateNode.tsx │ │ │ ├── TransitionNode.tsx │ │ │ ├── node-button/ │ │ │ │ ├── InputNameBar.tsx │ │ │ │ └── NodePlayButton.tsx │ │ │ ├── node-input/ │ │ │ │ ├── FileUploadField.tsx │ │ │ │ ├── ImageMaskCreator.tsx │ │ │ │ ├── ImageMaskCreatorField.tsx │ │ │ │ ├── ImageMaskCreatorFieldFlowAware.tsx │ │ │ │ ├── KeyValueInputList.tsx │ │ │ │ ├── NodeField.tsx │ │ │ │ ├── NodeTextField.tsx │ │ │ │ ├── NodeTextarea.tsx │ │ │ │ ├── OutputRenderer.tsx │ │ │ │ └── TextAreaPopupWrapper.tsx │ │ │ ├── node-output/ │ │ │ │ ├── AudioUrlOutput.tsx │ │ │ │ ├── ImageBase64Output.tsx │ │ │ │ ├── ImageUrlOutput.tsx │ │ │ │ ├── MarkdownOutput.tsx │ │ │ │ ├── NodeOutput.tsx │ │ │ │ ├── OutputDisplay.tsx │ │ │ │ ├── PdfUrlOutput.tsx │ │ │ │ ├── ThreeDimensionalUrlOutput.tsx │ │ │ │ ├── VideoUrlOutput.tsx │ │ │ │ └── outputUtils.ts │ │ │ ├── types/ │ │ │ │ └── node.ts │ │ │ └── utils/ │ │ │ ├── HintComponent.tsx │ │ │ ├── ImageModal.tsx │ │ │ ├── ImageZoomable.tsx │ │ │ ├── NodeHelp.tsx │ │ │ ├── NodeIcons.tsx │ │ │ └── TextareaModal.tsx │ │ ├── players/ │ │ │ └── VideoJS.tsx │ │ ├── popups/ │ │ │ ├── ConfirmPopup.tsx │ │ │ ├── DefaultPopup.tsx │ │ │ ├── HelpPopup.tsx │ │ │ ├── UserMessagePopup.tsx │ │ │ ├── config-popup/ │ │ │ │ ├── AppParameters.tsx │ │ │ │ ├── ConfigPopup.tsx │ │ │ │ ├── DisplayParameters.tsx │ │ │ │ ├── ParametersFields.tsx │ │ │ │ ├── UserParameters.tsx │ │ │ │ ├── configMetadata.ts │ │ │ │ └── parameters.ts │ │ │ ├── select-model-popup/ │ │ │ │ ├── Model.tsx │ │ │ │ └── SelectModelPopup.tsx │ │ │ └── shared/ │ │ │ ├── FilterGrid.tsx │ │ │ ├── Grid.tsx │ │ │ └── LoadMoreButton.tsx │ │ ├── selectors/ │ │ │ ├── ActionGroup.tsx │ │ │ ├── ColorSelector.tsx │ │ │ ├── ExpandableBloc.tsx │ │ │ ├── FileDropZone.tsx │ │ │ ├── OptionSelector.tsx │ │ │ └── SelectAutocomplete.tsx │ │ ├── shared/ │ │ │ ├── motions/ │ │ │ │ ├── EaseOut.tsx │ │ │ │ ├── TapScale.tsx │ │ │ │ └── types.ts │ │ │ └── theme.tsx │ │ ├── side-views/ │ │ │ ├── CurrentNodeView.tsx │ │ │ └── JSONView.tsx │ │ ├── tools/ │ │ │ └── Fallback.tsx │ │ └── tour/ │ │ └── AppTour.tsx │ ├── config/ │ │ └── config.ts │ ├── hooks/ │ │ ├── useFlowSocketListeners.tsx │ │ ├── useFormFields.tsx │ │ ├── useHandlePositions.tsx │ │ ├── useHandleShowOutput.tsx │ │ ├── useIsPlaying.tsx │ │ ├── useIsTouchDevice.tsx │ │ ├── useLoading.tsx │ │ ├── useLocalStorage.tsx │ │ └── useRefreshOnAppearanceChange.tsx │ ├── i18n.js │ ├── index.css │ ├── index.tsx │ ├── init.js │ ├── layout/ │ │ └── main-layout/ │ │ ├── AppLayout.tsx │ │ ├── header/ │ │ │ ├── Tab.tsx │ │ │ └── TabHeader.tsx │ │ └── wrapper/ │ │ ├── FlowErrorBoundary.tsx │ │ └── FlowWrapper.tsx │ ├── nodes-configuration/ │ │ ├── dallENode.ts │ │ ├── gptVisionNode.ts │ │ ├── inputTextNode.ts │ │ ├── llmPrompt.ts │ │ ├── mergerPromptNode.ts │ │ ├── nodeConfig.ts │ │ ├── sectionConfig.ts │ │ ├── stableDiffusionStabilityAiNode.ts │ │ ├── types.ts │ │ ├── urlNode.ts │ │ └── youtubeTranscriptNode.ts │ ├── providers/ │ │ ├── FlowDataProvider.tsx │ │ ├── NodeProvider.tsx │ │ ├── SocketProvider.tsx │ │ ├── ThemeProvider.tsx │ │ └── VisibilityProvider.tsx │ ├── react-app-env.d.ts │ ├── reportWebVitals.ts │ ├── services/ │ │ └── tabStorage.ts │ ├── setupTests.ts │ ├── sockets/ │ │ ├── flowEventTypes.ts │ │ └── flowSocket.ts │ ├── utils/ │ │ ├── evaluateConditions.ts │ │ ├── flowChecker.ts │ │ ├── flowUtils.ts │ │ ├── mappings.tsx │ │ ├── navigatorUtils.ts │ │ ├── nodeConfigurationUtils.ts │ │ ├── nodeUtils.ts │ │ ├── openAPIUtils.ts │ │ └── toastUtils.tsx │ └── vite-env.d.ts ├── tailwind.config.js ├── test/ │ ├── e2e/ │ │ ├── intro-flow.spec.ts │ │ ├── loading-screen.spec.ts │ │ ├── main-content.spec.ts │ │ ├── sidebar-default-nodes.spec.ts │ │ ├── sidebar-extensions-nodes.spec.ts │ │ └── tuto-display.spec.ts │ ├── unit/ │ │ ├── flowChecker.test.ts │ │ └── flowUtils.test.ts │ └── utils.ts ├── tsconfig.json ├── vite.config.ts └── vitest.config.ts