Repository: conductor-oss/conductor Branch: main Commit: f150c843f7c0 Files: 2905 Total size: 15.5 MB Directory structure: gitextract_qhhcr7te/ ├── .claude/ │ └── agents/ │ └── docs-writer.md ├── .dockerignore ├── .gitattributes ├── .github/ │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.md │ │ ├── bug_report.yml │ │ ├── config.yml │ │ ├── documentation.md │ │ ├── documentation.yaml │ │ ├── feature_request.md │ │ └── feature_request.yaml │ ├── dependabot.yml │ ├── pull_request_template.md │ ├── release-drafter.yml │ └── workflows/ │ ├── ci.yml │ ├── debug-docker-credentials.yml │ ├── generate_gh_pages.yml │ ├── publish.yml │ ├── publish_build.yaml │ ├── publish_s3.yaml │ ├── release_draft.yml │ └── ui-next-ci.yml ├── .gitignore ├── .opencode/ │ └── plans/ │ └── video-generation-implementation.md ├── AGENTS.md ├── CHANGELOG.md ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── LICENSE ├── OPENSEARCH_TESTING_PLAN.md ├── OSSMETADATA ├── README.md ├── RELATED.md ├── ROADMAP.md ├── SECURITY.md ├── USERS.md ├── ai/ │ ├── CONTRIBUTING.md │ ├── JDBC_CONFIGURATION.md │ ├── README.md │ ├── VECTORDB_CONFIGURATION.md │ ├── build.gradle │ ├── examples/ │ │ ├── 01-chat-completion.json │ │ ├── 02-generate-embeddings.json │ │ ├── 03-image-generation.json │ │ ├── 04-audio-generation.json │ │ ├── 05-semantic-search.json │ │ ├── 06-rag-basic.json │ │ ├── 07-rag-complete.json │ │ ├── 08-mcp-list-tools.json │ │ ├── 09-mcp-call-tool.json │ │ ├── 10-mcp-ai-agent.json │ │ ├── 11-video-openai-sora.json │ │ ├── 12-video-gemini-veo.json │ │ ├── 13-image-to-video-pipeline.json │ │ ├── 14-stabilityai-image.json │ │ ├── 15-pdf-generation.json │ │ ├── 16-llm-to-pdf-pipeline.json │ │ └── README.md │ └── src/ │ ├── main/ │ │ └── java/ │ │ └── org/ │ │ └── conductoross/ │ │ └── conductor/ │ │ ├── ai/ │ │ │ ├── AIModel.java │ │ │ ├── AIModelProvider.java │ │ │ ├── LLMHelper.java │ │ │ ├── LLMs.java │ │ │ ├── MimeExtensionResolver.java │ │ │ ├── ModelConfiguration.java │ │ │ ├── document/ │ │ │ │ ├── DocumentAccessDeniedException.java │ │ │ │ ├── DocumentAccessPolicy.java │ │ │ │ ├── DocumentLoader.java │ │ │ │ ├── FileSystemDocumentLoader.java │ │ │ │ └── HttpDocumentLoader.java │ │ │ ├── mcp/ │ │ │ │ ├── JsonTextParser.java │ │ │ │ └── MCPService.java │ │ │ ├── models/ │ │ │ │ ├── AudioGenRequest.java │ │ │ │ ├── ChatCompletion.java │ │ │ │ ├── ChatMessage.java │ │ │ │ ├── EmbeddingGenRequest.java │ │ │ │ ├── GetConversationHistoryRequest.java │ │ │ │ ├── ImageGenRequest.java │ │ │ │ ├── IndexDocInput.java │ │ │ │ ├── IndexedDoc.java │ │ │ │ ├── LLMResponse.java │ │ │ │ ├── LLMWorkerInput.java │ │ │ │ ├── MCPListToolsRequest.java │ │ │ │ ├── MCPToolCallRequest.java │ │ │ │ ├── MarkdownToPdfRequest.java │ │ │ │ ├── Media.java │ │ │ │ ├── StoreEmbeddingsInput.java │ │ │ │ ├── TextCompletion.java │ │ │ │ ├── ToolCall.java │ │ │ │ ├── ToolSpec.java │ │ │ │ ├── VectorDBInput.java │ │ │ │ └── VideoGenRequest.java │ │ │ ├── pdf/ │ │ │ │ ├── MarkdownToPdfConverter.java │ │ │ │ ├── PdfDocumentRenderer.java │ │ │ │ ├── PdfImageResolver.java │ │ │ │ └── PdfRenderContext.java │ │ │ ├── providers/ │ │ │ │ ├── anthropic/ │ │ │ │ │ ├── Anthropic.java │ │ │ │ │ └── AnthropicConfiguration.java │ │ │ │ ├── azureopenai/ │ │ │ │ │ ├── AzureOpenAI.java │ │ │ │ │ └── AzureOpenAIConfiguration.java │ │ │ │ ├── bedrock/ │ │ │ │ │ ├── Bedrock.java │ │ │ │ │ └── BedrockConfiguration.java │ │ │ │ ├── cohere/ │ │ │ │ │ ├── CohereAI.java │ │ │ │ │ ├── CohereAIConfiguration.java │ │ │ │ │ ├── CohereChatModel.java │ │ │ │ │ ├── CohereChatOptions.java │ │ │ │ │ ├── CohereEmbeddingModel.java │ │ │ │ │ └── api/ │ │ │ │ │ └── CohereApi.java │ │ │ │ ├── gemini/ │ │ │ │ │ ├── GeminiGenAI.java │ │ │ │ │ ├── GeminiVertex.java │ │ │ │ │ ├── GeminiVertexConfiguration.java │ │ │ │ │ └── GeminiVideoModel.java │ │ │ │ ├── grok/ │ │ │ │ │ ├── Grok.java │ │ │ │ │ └── GrokAIConfiguration.java │ │ │ │ ├── huggingface/ │ │ │ │ │ ├── HuggingFace.java │ │ │ │ │ └── HuggingFaceConfiguration.java │ │ │ │ ├── mistral/ │ │ │ │ │ ├── MistralAI.java │ │ │ │ │ └── MistralAIConfiguration.java │ │ │ │ ├── ollama/ │ │ │ │ │ ├── Ollama.java │ │ │ │ │ └── OllamaConfiguration.java │ │ │ │ ├── openai/ │ │ │ │ │ ├── OpenAI.java │ │ │ │ │ ├── OpenAIConfiguration.java │ │ │ │ │ ├── OpenAIVideoModel.java │ │ │ │ │ └── api/ │ │ │ │ │ └── OpenAIVideoApi.java │ │ │ │ ├── perplexity/ │ │ │ │ │ ├── PerplexityAI.java │ │ │ │ │ └── PerplexityAIConfiguration.java │ │ │ │ └── stabilityai/ │ │ │ │ ├── StabilityAI.java │ │ │ │ ├── StabilityAIConfiguration.java │ │ │ │ └── StabilityAiApi.java │ │ │ ├── sql/ │ │ │ │ ├── JDBCConnectionConfig.java │ │ │ │ ├── JDBCInput.java │ │ │ │ ├── JDBCInstanceConfig.java │ │ │ │ ├── JDBCProvider.java │ │ │ │ └── JDBCWorker.java │ │ │ ├── tasks/ │ │ │ │ ├── mapper/ │ │ │ │ │ ├── AIModelTaskMapper.java │ │ │ │ │ ├── AudioGenerationTaskMapper.java │ │ │ │ │ ├── CallMCPToolTaskMapper.java │ │ │ │ │ ├── ChatCompleteTaskMapper.java │ │ │ │ │ ├── GenEmbeddingsTaskMapper.java │ │ │ │ │ ├── GetEmbeddingsTaskMapper.java │ │ │ │ │ ├── ImageGenerationTaskMapper.java │ │ │ │ │ ├── IndexTextTaskMapper.java │ │ │ │ │ ├── ListMCPToolsTaskMapper.java │ │ │ │ │ ├── PdfGenerationTaskMapper.java │ │ │ │ │ ├── SearchIndexTaskMapper.java │ │ │ │ │ ├── StoreEmbeddingsTaskMapper.java │ │ │ │ │ ├── TextCompleteTaskMapper.java │ │ │ │ │ └── VideoGenerationTaskMapper.java │ │ │ │ └── worker/ │ │ │ │ ├── DocumentGenWorkers.java │ │ │ │ ├── LLMWorkers.java │ │ │ │ ├── MCPWorkers.java │ │ │ │ └── VectorDBWorkers.java │ │ │ ├── vectordb/ │ │ │ │ ├── VectorDB.java │ │ │ │ ├── VectorDBConfig.java │ │ │ │ ├── VectorDBInstanceConfig.java │ │ │ │ ├── VectorDBProvider.java │ │ │ │ ├── VectorDBs.java │ │ │ │ ├── mongodb/ │ │ │ │ │ ├── MongoDBConfig.java │ │ │ │ │ └── MongoVectorDB.java │ │ │ │ ├── pinecone/ │ │ │ │ │ ├── PineconeConfig.java │ │ │ │ │ └── PineconeDB.java │ │ │ │ └── postgres/ │ │ │ │ ├── PostgresConfig.java │ │ │ │ └── PostgresVectorDB.java │ │ │ └── video/ │ │ │ ├── AsyncVideoModel.java │ │ │ ├── Video.java │ │ │ ├── VideoGeneration.java │ │ │ ├── VideoGenerationMetadata.java │ │ │ ├── VideoMessage.java │ │ │ ├── VideoModel.java │ │ │ ├── VideoOptions.java │ │ │ ├── VideoOptionsBuilder.java │ │ │ ├── VideoPrompt.java │ │ │ ├── VideoResponse.java │ │ │ └── VideoResponseMetadata.java │ │ └── config/ │ │ └── AIIntegrationEnabledCondition.java │ └── test/ │ ├── java/ │ │ └── org/ │ │ └── conductoross/ │ │ └── conductor/ │ │ └── ai/ │ │ ├── AIModelProviderTest.java │ │ ├── LLMHelperTest.java │ │ ├── LLMsTest.java │ │ ├── document/ │ │ │ └── DocumentAccessPolicyTest.java │ │ ├── integration/ │ │ │ └── AIModelIntegrationTest.java │ │ ├── mapper/ │ │ │ ├── GenEmbeddingsTaskMapperTest.java │ │ │ ├── GetEmbeddingsTaskMapperTest.java │ │ │ ├── IndexTextTaskMapperTest.java │ │ │ ├── PdfGenerationTaskMapperTest.java │ │ │ ├── SearchIndexTaskMapperTest.java │ │ │ ├── StoreEmbeddingsTaskMapperTest.java │ │ │ └── TextCompleteTaskMapperTest.java │ │ ├── mcp/ │ │ │ └── JsonTextParserTest.java │ │ ├── pdf/ │ │ │ ├── DocumentGenWorkersTest.java │ │ │ ├── MarkdownToPdfConverterTest.java │ │ │ ├── PdfImageResolverTest.java │ │ │ └── PdfRenderContextTest.java │ │ ├── providers/ │ │ │ ├── anthropic/ │ │ │ │ ├── AnthropicConfigurationTest.java │ │ │ │ └── AnthropicTest.java │ │ │ ├── azureopenai/ │ │ │ │ ├── AzureOpenAIConfigurationTest.java │ │ │ │ └── AzureOpenAITest.java │ │ │ ├── bedrock/ │ │ │ │ ├── BedrockConfigurationTest.java │ │ │ │ └── BedrockTest.java │ │ │ ├── cohere/ │ │ │ │ ├── CohereAIConfigurationTest.java │ │ │ │ └── CohereAITest.java │ │ │ ├── gemini/ │ │ │ │ ├── GeminiVertexConfigurationTest.java │ │ │ │ └── GeminiVertexTest.java │ │ │ ├── grok/ │ │ │ │ ├── GrokAIConfigurationTest.java │ │ │ │ └── GrokTest.java │ │ │ ├── huggingface/ │ │ │ │ ├── HuggingFaceConfigurationTest.java │ │ │ │ └── HuggingFaceTest.java │ │ │ ├── mistral/ │ │ │ │ ├── MistralAIConfigurationTest.java │ │ │ │ └── MistralAITest.java │ │ │ ├── ollama/ │ │ │ │ ├── OllamaConfigurationTest.java │ │ │ │ └── OllamaTest.java │ │ │ ├── openai/ │ │ │ │ ├── OpenAIConfigurationTest.java │ │ │ │ └── OpenAITest.java │ │ │ └── perplexity/ │ │ │ ├── PerplexityAIConfigurationTest.java │ │ │ └── PerplexityAITest.java │ │ ├── sql/ │ │ │ ├── JDBCConnectionConfigTest.java │ │ │ ├── JDBCEndToEndTest.java │ │ │ ├── JDBCInstanceConfigTest.java │ │ │ └── JDBCProviderTest.java │ │ ├── vectordb/ │ │ │ ├── MongoVectorDBTest.java │ │ │ ├── PostgresVectorDBTest.java │ │ │ ├── VectorDBProviderTest.java │ │ │ └── VectorDBsTest.java │ │ └── video/ │ │ ├── VideoMemoryTest.java │ │ ├── VideoModelTest.java │ │ └── VideoProviderMemoryTest.java │ └── resources/ │ └── ai-test-env.sh ├── amqp/ │ ├── build.gradle │ └── src/ │ ├── main/ │ │ └── java/ │ │ └── com/ │ │ └── netflix/ │ │ └── conductor/ │ │ └── contribs/ │ │ └── queue/ │ │ └── amqp/ │ │ ├── AMQPConnection.java │ │ ├── AMQPObservableQueue.java │ │ ├── config/ │ │ │ ├── AMQPEventQueueConfiguration.java │ │ │ ├── AMQPEventQueueProperties.java │ │ │ ├── AMQPEventQueueProvider.java │ │ │ └── AMQPRetryPattern.java │ │ └── util/ │ │ ├── AMQPConfigurations.java │ │ ├── AMQPConstants.java │ │ ├── AMQPSettings.java │ │ ├── ConnectionType.java │ │ └── RetryType.java │ └── test/ │ └── java/ │ └── com/ │ └── netflix/ │ └── conductor/ │ └── contribs/ │ └── queue/ │ └── amqp/ │ ├── AMQPEventQueueProviderTest.java │ ├── AMQPObservableQueueTest.java │ └── AMQPSettingsTest.java ├── annotations/ │ ├── README.md │ ├── build.gradle │ └── src/ │ └── main/ │ └── java/ │ └── com/ │ └── netflix/ │ └── conductor/ │ └── annotations/ │ └── protogen/ │ ├── ProtoEnum.java │ ├── ProtoField.java │ └── ProtoMessage.java ├── annotations-processor/ │ ├── README.md │ ├── build.gradle │ └── src/ │ ├── example/ │ │ └── java/ │ │ └── com/ │ │ └── example/ │ │ └── Example.java │ ├── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── netflix/ │ │ │ └── conductor/ │ │ │ └── annotationsprocessor/ │ │ │ └── protogen/ │ │ │ ├── AbstractMessage.java │ │ │ ├── Enum.java │ │ │ ├── Message.java │ │ │ ├── ProtoFile.java │ │ │ ├── ProtoGen.java │ │ │ ├── ProtoGenTask.java │ │ │ └── types/ │ │ │ ├── AbstractType.java │ │ │ ├── ExternMessageType.java │ │ │ ├── GenericType.java │ │ │ ├── ListType.java │ │ │ ├── MapType.java │ │ │ ├── MessageType.java │ │ │ ├── ScalarType.java │ │ │ ├── TypeMapper.java │ │ │ └── WrappedType.java │ │ └── resources/ │ │ └── templates/ │ │ ├── file.proto │ │ └── message.proto │ └── test/ │ ├── java/ │ │ └── com/ │ │ └── netflix/ │ │ └── conductor/ │ │ └── annotationsprocessor/ │ │ └── protogen/ │ │ └── ProtoGenTest.java │ └── resources/ │ └── example.proto.txt ├── awss3-storage/ │ ├── README.md │ ├── build.gradle │ └── src/ │ └── main/ │ ├── java/ │ │ └── com/ │ │ └── netflix/ │ │ └── conductor/ │ │ └── s3/ │ │ ├── config/ │ │ │ ├── S3Configuration.java │ │ │ └── S3Properties.java │ │ └── storage/ │ │ └── S3PayloadStorage.java │ └── resources/ │ └── META-INF/ │ └── additional-spring-configuration-metadata.json ├── awssqs-event-queue/ │ ├── README.md │ ├── build.gradle │ └── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── netflix/ │ │ │ └── conductor/ │ │ │ └── sqs/ │ │ │ ├── config/ │ │ │ │ ├── SQSEventQueueConfiguration.java │ │ │ │ ├── SQSEventQueueProperties.java │ │ │ │ └── SQSEventQueueProvider.java │ │ │ └── eventqueue/ │ │ │ └── SQSObservableQueue.java │ │ └── resources/ │ │ └── META-INF/ │ │ └── additional-spring-configuration-metadata.json │ └── test/ │ └── java/ │ └── com/ │ └── netflix/ │ └── conductor/ │ └── sqs/ │ └── eventqueue/ │ ├── DefaultEventQueueProcessorTest.java │ └── SQSObservableQueueTest.java ├── azureblob-storage/ │ ├── README.md │ ├── build.gradle │ └── src/ │ ├── main/ │ │ └── java/ │ │ └── com/ │ │ └── netflix/ │ │ └── conductor/ │ │ └── azureblob/ │ │ ├── config/ │ │ │ ├── AzureBlobConfiguration.java │ │ │ └── AzureBlobProperties.java │ │ └── storage/ │ │ └── AzureBlobPayloadStorage.java │ └── test/ │ └── java/ │ └── com/ │ └── netflix/ │ └── conductor/ │ └── azureblob/ │ └── storage/ │ └── AzureBlobPayloadStorageTest.java ├── build.gradle ├── build_ui.sh ├── cassandra-persistence/ │ ├── build.gradle │ └── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── netflix/ │ │ │ └── conductor/ │ │ │ └── cassandra/ │ │ │ ├── config/ │ │ │ │ ├── CassandraConfiguration.java │ │ │ │ ├── CassandraProperties.java │ │ │ │ └── cache/ │ │ │ │ ├── CacheableEventHandlerDAO.java │ │ │ │ ├── CacheableMetadataDAO.java │ │ │ │ └── CachingConfig.java │ │ │ ├── dao/ │ │ │ │ ├── CassandraBaseDAO.java │ │ │ │ ├── CassandraEventHandlerDAO.java │ │ │ │ ├── CassandraExecutionDAO.java │ │ │ │ ├── CassandraMetadataDAO.java │ │ │ │ └── CassandraPollDataDAO.java │ │ │ └── util/ │ │ │ ├── Constants.java │ │ │ └── Statements.java │ │ └── resources/ │ │ └── META-INF/ │ │ └── additional-spring-configuration-metadata.json │ └── test/ │ └── groovy/ │ └── com/ │ └── netflix/ │ └── conductor/ │ └── cassandra/ │ ├── dao/ │ │ ├── CassandraEventHandlerDAOSpec.groovy │ │ ├── CassandraExecutionDAOSpec.groovy │ │ ├── CassandraMetadataDAOSpec.groovy │ │ └── CassandraSpec.groovy │ └── util/ │ └── StatementsSpec.groovy ├── common/ │ ├── build.gradle │ └── src/ │ ├── main/ │ │ └── java/ │ │ ├── com/ │ │ │ └── netflix/ │ │ │ └── conductor/ │ │ │ ├── annotations/ │ │ │ │ └── protogen/ │ │ │ │ ├── ProtoEnum.java │ │ │ │ ├── ProtoField.java │ │ │ │ └── ProtoMessage.java │ │ │ ├── common/ │ │ │ │ ├── config/ │ │ │ │ │ ├── ObjectMapperBuilderConfiguration.java │ │ │ │ │ ├── ObjectMapperConfiguration.java │ │ │ │ │ └── ObjectMapperProvider.java │ │ │ │ ├── constraints/ │ │ │ │ │ ├── NoSemiColonConstraint.java │ │ │ │ │ ├── OwnerEmailMandatoryConstraint.java │ │ │ │ │ ├── TaskReferenceNameUniqueConstraint.java │ │ │ │ │ ├── TaskTimeoutConstraint.java │ │ │ │ │ └── ValidNameConstraint.java │ │ │ │ ├── jackson/ │ │ │ │ │ └── JsonProtoModule.java │ │ │ │ ├── metadata/ │ │ │ │ │ ├── Auditable.java │ │ │ │ │ ├── BaseDef.java │ │ │ │ │ ├── SchemaDef.java │ │ │ │ │ ├── acl/ │ │ │ │ │ │ └── Permission.java │ │ │ │ │ ├── events/ │ │ │ │ │ │ ├── EventExecution.java │ │ │ │ │ │ └── EventHandler.java │ │ │ │ │ ├── tasks/ │ │ │ │ │ │ ├── ExecutionMetadata.java │ │ │ │ │ │ ├── PollData.java │ │ │ │ │ │ ├── Task.java │ │ │ │ │ │ ├── TaskDef.java │ │ │ │ │ │ ├── TaskExecLog.java │ │ │ │ │ │ ├── TaskResult.java │ │ │ │ │ │ └── TaskType.java │ │ │ │ │ └── workflow/ │ │ │ │ │ ├── CacheConfig.java │ │ │ │ │ ├── DynamicForkJoinTask.java │ │ │ │ │ ├── DynamicForkJoinTaskList.java │ │ │ │ │ ├── IdempotencyStrategy.java │ │ │ │ │ ├── RateLimitConfig.java │ │ │ │ │ ├── RerunWorkflowRequest.java │ │ │ │ │ ├── SkipTaskRequest.java │ │ │ │ │ ├── StartWorkflowRequest.java │ │ │ │ │ ├── StateChangeEvent.java │ │ │ │ │ ├── SubWorkflowParams.java │ │ │ │ │ ├── UpgradeWorkflowRequest.java │ │ │ │ │ ├── WorkflowDef.java │ │ │ │ │ ├── WorkflowDefSummary.java │ │ │ │ │ └── WorkflowTask.java │ │ │ │ ├── model/ │ │ │ │ │ └── BulkResponse.java │ │ │ │ ├── run/ │ │ │ │ │ ├── ExternalStorageLocation.java │ │ │ │ │ ├── SearchResult.java │ │ │ │ │ ├── TaskSummary.java │ │ │ │ │ ├── Workflow.java │ │ │ │ │ ├── WorkflowSummary.java │ │ │ │ │ ├── WorkflowSummaryExtended.java │ │ │ │ │ └── WorkflowTestRequest.java │ │ │ │ ├── utils/ │ │ │ │ │ ├── ConstraintParamUtil.java │ │ │ │ │ ├── EnvUtils.java │ │ │ │ │ ├── ExternalPayloadStorage.java │ │ │ │ │ ├── SummaryUtil.java │ │ │ │ │ └── TaskUtils.java │ │ │ │ └── validation/ │ │ │ │ ├── ErrorResponse.java │ │ │ │ └── ValidationError.java │ │ │ └── sdk/ │ │ │ └── workflow/ │ │ │ └── executor/ │ │ │ └── task/ │ │ │ ├── NonRetryableException.java │ │ │ └── TaskContext.java │ │ └── org/ │ │ └── conductoross/ │ │ └── conductor/ │ │ ├── ai/ │ │ │ └── TokenUsageLog.java │ │ ├── common/ │ │ │ ├── Documented.java │ │ │ ├── JsonSchemaValidator.java │ │ │ └── utils/ │ │ │ ├── StringTemplate.java │ │ │ └── TextUtils.java │ │ ├── core/ │ │ │ └── execution/ │ │ │ └── tasks/ │ │ │ └── AnnotatedSystemTaskWorker.java │ │ └── model/ │ │ ├── SignalResponse.java │ │ ├── TaskRun.java │ │ ├── WorkflowRun.java │ │ └── WorkflowSignalReturnStrategy.java │ └── test/ │ ├── java/ │ │ └── com/ │ │ └── netflix/ │ │ └── conductor/ │ │ └── common/ │ │ ├── config/ │ │ │ └── TestObjectMapperConfiguration.java │ │ ├── constraints/ │ │ │ └── NameValidatorTest.java │ │ ├── events/ │ │ │ └── EventHandlerTest.java │ │ ├── run/ │ │ │ └── TaskSummaryTest.java │ │ ├── tasks/ │ │ │ ├── TaskDefTest.java │ │ │ ├── TaskResultTest.java │ │ │ └── TaskTest.java │ │ ├── utils/ │ │ │ ├── ConstraintParamUtilTest.java │ │ │ └── SummaryUtilTest.java │ │ └── workflow/ │ │ ├── SubWorkflowParamsTest.java │ │ ├── WorkflowDefValidatorTest.java │ │ └── WorkflowTaskTest.java │ └── resources/ │ └── application.properties ├── common-persistence/ │ ├── build.gradle │ └── src/ │ └── test/ │ └── java/ │ └── com/ │ └── netflix/ │ └── conductor/ │ └── dao/ │ ├── ExecutionDAOTest.java │ └── TestBase.java ├── conductor-clients/ │ └── README.md ├── conductor_server.bat ├── conductor_server.ps1 ├── conductor_server.sh ├── core/ │ ├── build.gradle │ └── src/ │ ├── main/ │ │ ├── java/ │ │ │ ├── com/ │ │ │ │ └── netflix/ │ │ │ │ └── conductor/ │ │ │ │ ├── annotations/ │ │ │ │ │ ├── Audit.java │ │ │ │ │ ├── Trace.java │ │ │ │ │ └── VisibleForTesting.java │ │ │ │ ├── core/ │ │ │ │ │ ├── LifecycleAwareComponent.java │ │ │ │ │ ├── WorkflowContext.java │ │ │ │ │ ├── config/ │ │ │ │ │ │ ├── ConductorCoreConfiguration.java │ │ │ │ │ │ ├── ConductorProperties.java │ │ │ │ │ │ └── SchedulerConfiguration.java │ │ │ │ │ ├── dal/ │ │ │ │ │ │ └── ExecutionDAOFacade.java │ │ │ │ │ ├── events/ │ │ │ │ │ │ ├── ActionProcessor.java │ │ │ │ │ │ ├── DefaultEventProcessor.java │ │ │ │ │ │ ├── DefaultEventQueueManager.java │ │ │ │ │ │ ├── EventQueueManager.java │ │ │ │ │ │ ├── EventQueueProvider.java │ │ │ │ │ │ ├── EventQueues.java │ │ │ │ │ │ ├── ScriptEvaluator.java │ │ │ │ │ │ ├── SimpleActionProcessor.java │ │ │ │ │ │ └── queue/ │ │ │ │ │ │ ├── ConductorEventQueueProvider.java │ │ │ │ │ │ ├── ConductorObservableQueue.java │ │ │ │ │ │ ├── DefaultEventQueueProcessor.java │ │ │ │ │ │ ├── Message.java │ │ │ │ │ │ └── ObservableQueue.java │ │ │ │ │ ├── exception/ │ │ │ │ │ │ ├── ConflictException.java │ │ │ │ │ │ ├── NonTransientException.java │ │ │ │ │ │ ├── NotFoundException.java │ │ │ │ │ │ ├── TerminateWorkflowException.java │ │ │ │ │ │ └── TransientException.java │ │ │ │ │ ├── execution/ │ │ │ │ │ │ ├── AsyncSystemTaskExecutor.java │ │ │ │ │ │ ├── DeciderService.java │ │ │ │ │ │ ├── NotificationResult.java │ │ │ │ │ │ ├── StartWorkflowInput.java │ │ │ │ │ │ ├── WorkflowExecutor.java │ │ │ │ │ │ ├── WorkflowExecutorOps.java │ │ │ │ │ │ ├── evaluators/ │ │ │ │ │ │ │ ├── ConsoleBridge.java │ │ │ │ │ │ │ ├── Evaluator.java │ │ │ │ │ │ │ ├── GraalJSEvaluator.java │ │ │ │ │ │ │ ├── JavascriptEvaluator.java │ │ │ │ │ │ │ ├── PythonEvaluator.java │ │ │ │ │ │ │ └── ValueParamEvaluator.java │ │ │ │ │ │ ├── mapper/ │ │ │ │ │ │ │ ├── DecisionTaskMapper.java │ │ │ │ │ │ │ ├── DoWhileTaskMapper.java │ │ │ │ │ │ │ ├── DynamicTaskMapper.java │ │ │ │ │ │ │ ├── EventTaskMapper.java │ │ │ │ │ │ │ ├── ExclusiveJoinTaskMapper.java │ │ │ │ │ │ │ ├── ForkJoinDynamicTaskMapper.java │ │ │ │ │ │ │ ├── ForkJoinTaskMapper.java │ │ │ │ │ │ │ ├── HTTPTaskMapper.java │ │ │ │ │ │ │ ├── HumanTaskMapper.java │ │ │ │ │ │ │ ├── InlineTaskMapper.java │ │ │ │ │ │ │ ├── JoinTaskMapper.java │ │ │ │ │ │ │ ├── JsonJQTransformTaskMapper.java │ │ │ │ │ │ │ ├── KafkaPublishTaskMapper.java │ │ │ │ │ │ │ ├── LambdaTaskMapper.java │ │ │ │ │ │ │ ├── NoopTaskMapper.java │ │ │ │ │ │ │ ├── SetVariableTaskMapper.java │ │ │ │ │ │ │ ├── SimpleTaskMapper.java │ │ │ │ │ │ │ ├── StartWorkflowTaskMapper.java │ │ │ │ │ │ │ ├── SubWorkflowTaskMapper.java │ │ │ │ │ │ │ ├── SwitchTaskMapper.java │ │ │ │ │ │ │ ├── TaskMapper.java │ │ │ │ │ │ │ ├── TaskMapperContext.java │ │ │ │ │ │ │ ├── TerminateTaskMapper.java │ │ │ │ │ │ │ ├── UserDefinedTaskMapper.java │ │ │ │ │ │ │ └── WaitTaskMapper.java │ │ │ │ │ │ └── tasks/ │ │ │ │ │ │ ├── Decision.java │ │ │ │ │ │ ├── DoWhile.java │ │ │ │ │ │ ├── Event.java │ │ │ │ │ │ ├── ExclusiveJoin.java │ │ │ │ │ │ ├── ExecutionConfig.java │ │ │ │ │ │ ├── Fork.java │ │ │ │ │ │ ├── Human.java │ │ │ │ │ │ ├── Inline.java │ │ │ │ │ │ ├── IsolatedTaskQueueProducer.java │ │ │ │ │ │ ├── Join.java │ │ │ │ │ │ ├── Lambda.java │ │ │ │ │ │ ├── Noop.java │ │ │ │ │ │ ├── SetVariable.java │ │ │ │ │ │ ├── StartWorkflow.java │ │ │ │ │ │ ├── SubWorkflow.java │ │ │ │ │ │ ├── Switch.java │ │ │ │ │ │ ├── SystemTaskRegistry.java │ │ │ │ │ │ ├── SystemTaskWorker.java │ │ │ │ │ │ ├── SystemTaskWorkerCoordinator.java │ │ │ │ │ │ ├── Terminate.java │ │ │ │ │ │ ├── Wait.java │ │ │ │ │ │ └── WorkflowSystemTask.java │ │ │ │ │ ├── index/ │ │ │ │ │ │ ├── NoopIndexDAO.java │ │ │ │ │ │ └── NoopIndexDAOConfiguration.java │ │ │ │ │ ├── listener/ │ │ │ │ │ │ ├── TaskStatusListener.java │ │ │ │ │ │ ├── TaskStatusListenerStub.java │ │ │ │ │ │ ├── WorkflowStatusListener.java │ │ │ │ │ │ └── WorkflowStatusListenerStub.java │ │ │ │ │ ├── metadata/ │ │ │ │ │ │ └── MetadataMapperService.java │ │ │ │ │ ├── reconciliation/ │ │ │ │ │ │ ├── WorkflowReconciler.java │ │ │ │ │ │ ├── WorkflowRepairService.java │ │ │ │ │ │ └── WorkflowSweeper.java │ │ │ │ │ ├── storage/ │ │ │ │ │ │ └── DummyPayloadStorage.java │ │ │ │ │ ├── sync/ │ │ │ │ │ │ ├── Lock.java │ │ │ │ │ │ ├── local/ │ │ │ │ │ │ │ ├── LocalOnlyLock.java │ │ │ │ │ │ │ └── LocalOnlyLockConfiguration.java │ │ │ │ │ │ └── noop/ │ │ │ │ │ │ └── NoopLock.java │ │ │ │ │ └── utils/ │ │ │ │ │ ├── DateTimeUtils.java │ │ │ │ │ ├── ExternalPayloadStorageUtils.java │ │ │ │ │ ├── IDGenerator.java │ │ │ │ │ ├── JsonUtils.java │ │ │ │ │ ├── ParametersUtils.java │ │ │ │ │ ├── QueueUtils.java │ │ │ │ │ ├── SemaphoreUtil.java │ │ │ │ │ └── Utils.java │ │ │ │ ├── dao/ │ │ │ │ │ ├── ConcurrentExecutionLimitDAO.java │ │ │ │ │ ├── EventHandlerDAO.java │ │ │ │ │ ├── ExecutionDAO.java │ │ │ │ │ ├── IndexDAO.java │ │ │ │ │ ├── MetadataDAO.java │ │ │ │ │ ├── PollDataDAO.java │ │ │ │ │ ├── QueueDAO.java │ │ │ │ │ └── RateLimitingDAO.java │ │ │ │ ├── metrics/ │ │ │ │ │ ├── Monitors.java │ │ │ │ │ └── WorkflowMonitor.java │ │ │ │ ├── model/ │ │ │ │ │ ├── TaskModel.java │ │ │ │ │ ├── WorkflowModel.java │ │ │ │ │ └── WorkflowNotifications.java │ │ │ │ ├── sdk/ │ │ │ │ │ └── workflow/ │ │ │ │ │ └── task/ │ │ │ │ │ ├── InputParam.java │ │ │ │ │ ├── OutputParam.java │ │ │ │ │ └── WorkerTask.java │ │ │ │ ├── service/ │ │ │ │ │ ├── AdminService.java │ │ │ │ │ ├── AdminServiceImpl.java │ │ │ │ │ ├── EventService.java │ │ │ │ │ ├── EventServiceImpl.java │ │ │ │ │ ├── ExecutionLockService.java │ │ │ │ │ ├── ExecutionService.java │ │ │ │ │ ├── MetadataService.java │ │ │ │ │ ├── MetadataServiceImpl.java │ │ │ │ │ ├── TaskService.java │ │ │ │ │ ├── TaskServiceImpl.java │ │ │ │ │ ├── VersionService.java │ │ │ │ │ ├── WorkflowBulkService.java │ │ │ │ │ ├── WorkflowBulkServiceImpl.java │ │ │ │ │ ├── WorkflowService.java │ │ │ │ │ ├── WorkflowServiceImpl.java │ │ │ │ │ └── WorkflowTestService.java │ │ │ │ └── validations/ │ │ │ │ ├── ValidationContext.java │ │ │ │ └── WorkflowTaskTypeConstraint.java │ │ │ └── org/ │ │ │ └── conductoross/ │ │ │ └── conductor/ │ │ │ └── core/ │ │ │ └── execution/ │ │ │ ├── ExecutorUtils.java │ │ │ ├── SweeperProperties.java │ │ │ ├── WorkflowSweeper.java │ │ │ ├── mapper/ │ │ │ │ ├── AnnotatedSystemTaskMapper.java │ │ │ │ └── TaskMapperValidator.java │ │ │ └── tasks/ │ │ │ └── annotated/ │ │ │ ├── AnnotatedMethodParameterMapper.java │ │ │ ├── AnnotatedMethodResultMapper.java │ │ │ ├── AnnotatedWorkflowSystemTask.java │ │ │ ├── SampleWorkers.java │ │ │ └── WorkerTaskAnnotationScanner.java │ │ └── resources/ │ │ └── META-INF/ │ │ ├── additional-spring-configuration-metadata.json │ │ ├── validation/ │ │ │ └── constraints.xml │ │ └── validation.xml │ └── test/ │ ├── groovy/ │ │ └── com/ │ │ └── netflix/ │ │ └── conductor/ │ │ ├── core/ │ │ │ └── execution/ │ │ │ ├── AsyncSystemTaskExecutorTest.groovy │ │ │ └── tasks/ │ │ │ ├── DoWhileSpec.groovy │ │ │ ├── EventSpec.groovy │ │ │ ├── IsolatedTaskQueueProducerSpec.groovy │ │ │ └── StartWorkflowSpec.groovy │ │ └── model/ │ │ ├── TaskModelSpec.groovy │ │ └── WorkflowModelSpec.groovy │ ├── java/ │ │ ├── com/ │ │ │ └── netflix/ │ │ │ └── conductor/ │ │ │ ├── TestUtils.java │ │ │ ├── core/ │ │ │ │ ├── dal/ │ │ │ │ │ └── ExecutionDAOFacadeTest.java │ │ │ │ ├── events/ │ │ │ │ │ ├── MockObservableQueue.java │ │ │ │ │ ├── MockQueueProvider.java │ │ │ │ │ ├── TestDefaultEventProcessor.java │ │ │ │ │ ├── TestGraalJSFeatures.java │ │ │ │ │ ├── TestScriptEval.java │ │ │ │ │ └── TestSimpleActionProcessor.java │ │ │ │ ├── execution/ │ │ │ │ │ ├── NotificationResultTest.java │ │ │ │ │ ├── TestDeciderOutcomes.java │ │ │ │ │ ├── TestDeciderService.java │ │ │ │ │ ├── TestWorkflowDef.java │ │ │ │ │ ├── TestWorkflowExecutor.java │ │ │ │ │ ├── TestWorkflowExecutorDecideLoop.java │ │ │ │ │ ├── WorkflowSystemTaskStub.java │ │ │ │ │ ├── evaluators/ │ │ │ │ │ │ ├── GraalJSEvaluatorTest.java │ │ │ │ │ │ └── JavascriptEvaluatorTest.java │ │ │ │ │ ├── mapper/ │ │ │ │ │ │ ├── DecisionTaskMapperTest.java │ │ │ │ │ │ ├── DoWhileTaskMapperTest.java │ │ │ │ │ │ ├── DynamicTaskMapperTest.java │ │ │ │ │ │ ├── EventTaskMapperTest.java │ │ │ │ │ │ ├── ForkJoinDynamicTaskMapperTest.java │ │ │ │ │ │ ├── ForkJoinTaskMapperTest.java │ │ │ │ │ │ ├── HTTPTaskMapperTest.java │ │ │ │ │ │ ├── HumanTaskMapperTest.java │ │ │ │ │ │ ├── InlineTaskMapperTest.java │ │ │ │ │ │ ├── JoinTaskMapperTest.java │ │ │ │ │ │ ├── JsonJQTransformTaskMapperTest.java │ │ │ │ │ │ ├── KafkaPublishTaskMapperTest.java │ │ │ │ │ │ ├── LambdaTaskMapperTest.java │ │ │ │ │ │ ├── NoopTaskMapperTest.java │ │ │ │ │ │ ├── SetVariableTaskMapperTest.java │ │ │ │ │ │ ├── SimpleTaskMapperTest.java │ │ │ │ │ │ ├── SubWorkflowTaskMapperTest.java │ │ │ │ │ │ ├── SwitchTaskMapperTest.java │ │ │ │ │ │ ├── TerminateTaskMapperTest.java │ │ │ │ │ │ ├── UserDefinedTaskMapperTest.java │ │ │ │ │ │ └── WaitTaskMapperTest.java │ │ │ │ │ └── tasks/ │ │ │ │ │ ├── DoWhileIntegrationTest.java │ │ │ │ │ ├── DoWhileTest.java │ │ │ │ │ ├── EventQueueResolutionTest.java │ │ │ │ │ ├── InlineTest.java │ │ │ │ │ ├── JoinTest.java │ │ │ │ │ ├── TestJoin.java │ │ │ │ │ ├── TestLambda.java │ │ │ │ │ ├── TestNoop.java │ │ │ │ │ ├── TestSubWorkflow.java │ │ │ │ │ ├── TestSystemTaskWorker.java │ │ │ │ │ ├── TestSystemTaskWorkerCoordinator.java │ │ │ │ │ └── TestTerminate.java │ │ │ │ ├── metadata/ │ │ │ │ │ └── MetadataMapperServiceTest.java │ │ │ │ ├── reconciliation/ │ │ │ │ │ ├── TestWorkflowRepairService.java │ │ │ │ │ └── TestWorkflowSweeper.java │ │ │ │ ├── storage/ │ │ │ │ │ └── DummyPayloadStorageTest.java │ │ │ │ ├── sync/ │ │ │ │ │ └── local/ │ │ │ │ │ └── LocalOnlyLockTest.java │ │ │ │ └── utils/ │ │ │ │ ├── DateTimeUtilsTest.java │ │ │ │ ├── ExternalPayloadStorageUtilsTest.java │ │ │ │ ├── JsonUtilsTest.java │ │ │ │ ├── ParametersUtilsTest.java │ │ │ │ ├── QueueUtilsTest.java │ │ │ │ └── SemaphoreUtilTest.java │ │ │ ├── dao/ │ │ │ │ ├── ExecutionDAOTest.java │ │ │ │ └── PollDataDAOTest.java │ │ │ ├── metrics/ │ │ │ │ └── WorkflowMonitorTest.java │ │ │ ├── service/ │ │ │ │ ├── EventServiceTest.java │ │ │ │ ├── ExecutionServiceTest.java │ │ │ │ ├── MetadataServiceTest.java │ │ │ │ ├── TaskServiceTest.java │ │ │ │ ├── WorkflowBulkServiceTest.java │ │ │ │ └── WorkflowServiceTest.java │ │ │ └── validations/ │ │ │ ├── WorkflowDefConstraintTest.java │ │ │ └── WorkflowTaskTypeConstraintTest.java │ │ └── org/ │ │ └── conductoross/ │ │ └── conductor/ │ │ └── core/ │ │ └── execution/ │ │ ├── ExecutorUtilsTest.java │ │ ├── WorkflowSweeperTest.java │ │ └── tasks/ │ │ └── annotated/ │ │ ├── TestAnnotatedMethodParameterMapper.java │ │ ├── TestAnnotatedMethodResultMapper.java │ │ ├── TestAnnotatedSystemTaskIntegration.java │ │ ├── TestAnnotatedWorkflowSystemTask.java │ │ └── TestTaskContext.java │ └── resources/ │ ├── completed.json │ ├── conditional_flow.json │ ├── conditional_flow_with_switch.json │ ├── payload.json │ └── test.json ├── dependencies.gradle ├── deploy.gradle ├── docker/ │ ├── README.md │ ├── ci/ │ │ └── Dockerfile │ ├── docker-compose-es8.yaml │ ├── docker-compose-mysql.yaml │ ├── docker-compose-postgres-es7.yaml │ ├── docker-compose-postgres.yaml │ ├── docker-compose-redis-os.yaml │ ├── docker-compose-redis-os2.yaml │ ├── docker-compose-redis-os3.yaml │ ├── docker-compose.yaml │ ├── server/ │ │ ├── Dockerfile │ │ ├── config/ │ │ │ ├── config-mysql.properties │ │ │ ├── config-postgres-es7.properties │ │ │ ├── config-postgres.properties │ │ │ ├── config-redis-es8.properties │ │ │ ├── config-redis-os.properties │ │ │ ├── config-redis-os2.properties │ │ │ ├── config-redis-os3.properties │ │ │ ├── config-redis.properties │ │ │ ├── config.properties │ │ │ ├── log4j-file-appender.properties │ │ │ ├── log4j.properties │ │ │ └── redis.conf │ │ ├── libs/ │ │ │ └── .gitignore │ │ └── nginx/ │ │ └── nginx.conf │ └── ui/ │ ├── Dockerfile │ └── README.md ├── docs/ │ ├── architecture/ │ │ ├── durable-execution.md │ │ └── json-native.md │ ├── css/ │ │ └── custom.css │ ├── devguide/ │ │ ├── ai/ │ │ │ ├── durable-agents.md │ │ │ ├── dynamic-workflows.md │ │ │ ├── failure-semantics.md │ │ │ ├── first-ai-agent.md │ │ │ ├── human-in-the-loop.md │ │ │ ├── index.md │ │ │ ├── llm-orchestration.md │ │ │ ├── mcp-guide.md │ │ │ ├── production-agent-architecture.md │ │ │ ├── token-efficiency.md │ │ │ └── why-conductor.md │ │ ├── architecture/ │ │ │ ├── directed-acyclic-graph.md │ │ │ ├── index.md │ │ │ └── tasklifecycle.md │ │ ├── bestpractices.md │ │ ├── concepts/ │ │ │ ├── conductor.md │ │ │ ├── index.md │ │ │ ├── tasks.md │ │ │ ├── workers.md │ │ │ └── workflows.md │ │ ├── cookbook/ │ │ │ ├── ai-llm.md │ │ │ ├── dynamic-parallelism.md │ │ │ ├── dynamic-workflows.md │ │ │ ├── event-driven.md │ │ │ ├── index.md │ │ │ ├── microservice-orchestration.md │ │ │ └── wait-and-timers.md │ │ ├── faq.md │ │ ├── how-tos/ │ │ │ ├── Tasks/ │ │ │ │ ├── choosing-tasks.md │ │ │ │ ├── creating-tasks.md │ │ │ │ └── task-inputs.md │ │ │ ├── Workers/ │ │ │ │ └── scaling-workers.md │ │ │ ├── Workflows/ │ │ │ │ ├── creating-workflows.md │ │ │ │ ├── debugging-workflows.md │ │ │ │ ├── handling-errors.md │ │ │ │ ├── searching-workflows.md │ │ │ │ ├── starting-workflows.md │ │ │ │ ├── versioning-workflows.md │ │ │ │ └── viewing-workflow-executions.md │ │ │ ├── conductor-skills.md │ │ │ └── event-bus.md │ │ ├── labs/ │ │ │ ├── eventhandlers.md │ │ │ ├── first-workflow.md │ │ │ ├── index.md │ │ │ └── kitchensink.md │ │ └── running/ │ │ ├── deploy.md │ │ ├── hosted.md │ │ └── source.md │ ├── documentation/ │ │ ├── advanced/ │ │ │ ├── annotation-processor.md │ │ │ ├── archival-of-workflows.md │ │ │ ├── extend.md │ │ │ ├── externalpayloadstorage.md │ │ │ ├── isolationgroups.md │ │ │ ├── opensearch.md │ │ │ ├── postgresql.md │ │ │ └── redis.md │ │ ├── api/ │ │ │ ├── bulk.md │ │ │ ├── eventhandlers.md │ │ │ ├── index.md │ │ │ ├── metadata.md │ │ │ ├── startworkflow.md │ │ │ ├── task.md │ │ │ ├── taskdomains.md │ │ │ └── workflow.md │ │ ├── clientsdks/ │ │ │ ├── csharp-sdk.md │ │ │ ├── go-sdk.md │ │ │ ├── index.md │ │ │ ├── java-sdk.md │ │ │ ├── js-sdk.md │ │ │ ├── python-sdk.md │ │ │ ├── ruby-sdk.md │ │ │ └── rust-sdk.md │ │ ├── configuration/ │ │ │ ├── appconf.md │ │ │ ├── eventhandlers.md │ │ │ ├── taskdef.md │ │ │ └── workflowdef/ │ │ │ ├── index.md │ │ │ ├── operators/ │ │ │ │ ├── do-while-task.md │ │ │ │ ├── dynamic-fork-task.md │ │ │ │ ├── dynamic-task.md │ │ │ │ ├── fork-task.md │ │ │ │ ├── index.md │ │ │ │ ├── join-task.md │ │ │ │ ├── set-variable-task.md │ │ │ │ ├── start-workflow-task.md │ │ │ │ ├── sub-workflow-task.md │ │ │ │ ├── switch-task.md │ │ │ │ └── terminate-task.md │ │ │ └── systemtasks/ │ │ │ ├── event-task.md │ │ │ ├── http-task.md │ │ │ ├── human-task.md │ │ │ ├── index.md │ │ │ ├── inline-task.md │ │ │ ├── jdbc-task.md │ │ │ ├── json-jq-transform-task.md │ │ │ ├── kafka-publish-task.md │ │ │ ├── noop-task.md │ │ │ └── wait-task.md │ │ └── metrics/ │ │ ├── client.md │ │ └── server.md │ ├── home/ │ │ └── redirect.html │ ├── index.md │ ├── overrides/ │ │ ├── 404.html │ │ ├── main.html │ │ └── partials/ │ │ └── logo.html │ ├── quickstart/ │ │ ├── index.md │ │ └── workflow.json │ ├── resources/ │ │ ├── contributing.md │ │ ├── license.md │ │ └── related.md │ └── robots.txt ├── es6-persistence/ │ ├── README.md │ ├── build.gradle │ └── src/ │ ├── main/ │ │ └── java/ │ │ └── com/ │ │ └── netflix/ │ │ └── conductor/ │ │ └── es6/ │ │ └── config/ │ │ ├── ElasticSearch6DeprecationConfiguration.java │ │ └── ElasticSearchConditions.java │ └── test/ │ └── java/ │ └── com/ │ └── netflix/ │ └── conductor/ │ └── es6/ │ └── config/ │ └── ElasticSearch6DeprecationTest.java ├── es7-persistence/ │ ├── README.md │ ├── build.gradle │ └── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── netflix/ │ │ │ └── conductor/ │ │ │ └── es7/ │ │ │ ├── config/ │ │ │ │ ├── ElasticSearchConditions.java │ │ │ │ ├── ElasticSearchProperties.java │ │ │ │ └── ElasticSearchV7Configuration.java │ │ │ └── dao/ │ │ │ ├── index/ │ │ │ │ ├── BulkRequestBuilderWrapper.java │ │ │ │ ├── BulkRequestWrapper.java │ │ │ │ ├── ElasticSearchBaseDAO.java │ │ │ │ └── ElasticSearchRestDAOV7.java │ │ │ └── query/ │ │ │ └── parser/ │ │ │ ├── Expression.java │ │ │ ├── FilterProvider.java │ │ │ ├── GroupedExpression.java │ │ │ ├── NameValue.java │ │ │ └── internal/ │ │ │ ├── AbstractNode.java │ │ │ ├── BooleanOp.java │ │ │ ├── ComparisonOp.java │ │ │ ├── ConstValue.java │ │ │ ├── FunctionThrowingException.java │ │ │ ├── ListConst.java │ │ │ ├── Name.java │ │ │ ├── ParserException.java │ │ │ └── Range.java │ │ └── resources/ │ │ ├── mappings_docType_task.json │ │ ├── mappings_docType_workflow.json │ │ ├── template_event.json │ │ ├── template_message.json │ │ └── template_task_log.json │ └── test/ │ ├── java/ │ │ └── com/ │ │ └── netflix/ │ │ └── conductor/ │ │ └── es7/ │ │ ├── config/ │ │ │ └── ElasticSearchPropertiesTest.java │ │ ├── dao/ │ │ │ ├── index/ │ │ │ │ ├── ElasticSearchRestDaoBaseTest.java │ │ │ │ ├── ElasticSearchTest.java │ │ │ │ ├── TestBulkRequestBuilderWrapper.java │ │ │ │ ├── TestElasticSearchRestDAOV7.java │ │ │ │ └── TestElasticSearchRestDAOV7Batch.java │ │ │ └── query/ │ │ │ └── parser/ │ │ │ ├── TestExpression.java │ │ │ ├── TestGroupedExpression.java │ │ │ └── internal/ │ │ │ ├── AbstractParserTest.java │ │ │ ├── TestBooleanOp.java │ │ │ ├── TestComparisonOp.java │ │ │ ├── TestConstValue.java │ │ │ └── TestName.java │ │ └── utils/ │ │ └── TestUtils.java │ └── resources/ │ ├── expected_template_task_log.json │ ├── task_summary.json │ └── workflow_summary.json ├── es8-persistence/ │ ├── README.md │ ├── build.gradle │ └── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── org/ │ │ │ └── conductoross/ │ │ │ └── conductor/ │ │ │ └── es8/ │ │ │ ├── config/ │ │ │ │ ├── ElasticSearchConditions.java │ │ │ │ ├── ElasticSearchProperties.java │ │ │ │ └── ElasticSearchV8Configuration.java │ │ │ └── dao/ │ │ │ ├── index/ │ │ │ │ ├── ElasticSearchRestDAOV8.java │ │ │ │ ├── Es8BulkIngestionSupport.java │ │ │ │ ├── Es8IndexManagementSupport.java │ │ │ │ └── Es8SearchSupport.java │ │ │ └── query/ │ │ │ └── parser/ │ │ │ ├── Expression.java │ │ │ ├── FilterProvider.java │ │ │ ├── GroupedExpression.java │ │ │ ├── NameValue.java │ │ │ └── internal/ │ │ │ ├── AbstractNode.java │ │ │ ├── BooleanOp.java │ │ │ ├── ComparisonOp.java │ │ │ ├── ConstValue.java │ │ │ ├── FunctionThrowingException.java │ │ │ ├── ListConst.java │ │ │ ├── Name.java │ │ │ ├── ParserException.java │ │ │ └── Range.java │ │ └── resources/ │ │ ├── template_event.json │ │ ├── template_message.json │ │ ├── template_task.json │ │ ├── template_task_log.json │ │ └── template_workflow.json │ └── test/ │ ├── java/ │ │ └── org/ │ │ └── conductoross/ │ │ └── conductor/ │ │ └── es8/ │ │ ├── config/ │ │ │ ├── ElasticSearchConditionsTest.java │ │ │ └── ElasticSearchPropertiesTest.java │ │ ├── dao/ │ │ │ ├── index/ │ │ │ │ ├── ElasticSearchRestDAOV8ResourceExistenceTest.java │ │ │ │ ├── ElasticSearchRestDaoBaseTest.java │ │ │ │ ├── ElasticSearchTest.java │ │ │ │ ├── Es8BulkIngestionSupportTest.java │ │ │ │ ├── Es8SearchSupportTest.java │ │ │ │ ├── TestElasticSearchRestDAOV8.java │ │ │ │ └── TestElasticSearchRestDAOV8Batch.java │ │ │ └── query/ │ │ │ └── parser/ │ │ │ ├── TestExpression.java │ │ │ ├── TestGroupedExpression.java │ │ │ ├── TestNameValueQueryBuilder.java │ │ │ └── internal/ │ │ │ ├── AbstractParserTest.java │ │ │ ├── TestBooleanOp.java │ │ │ ├── TestComparisonOp.java │ │ │ ├── TestConstValue.java │ │ │ └── TestName.java │ │ └── utils/ │ │ └── TestUtils.java │ └── resources/ │ ├── expected_template_task_log.json │ ├── task_summary.json │ └── workflow_summary.json ├── family.properties ├── gradle/ │ └── wrapper/ │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradle.properties ├── gradlew ├── gradlew.bat ├── grpc/ │ ├── build.gradle │ └── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── netflix/ │ │ │ └── conductor/ │ │ │ └── grpc/ │ │ │ ├── AbstractProtoMapper.java │ │ │ └── ProtoMapper.java │ │ └── proto/ │ │ ├── grpc/ │ │ │ ├── event_service.proto │ │ │ ├── metadata_service.proto │ │ │ ├── search.proto │ │ │ ├── task_service.proto │ │ │ └── workflow_service.proto │ │ └── model/ │ │ ├── cacheconfig.proto │ │ ├── dynamicforkjointask.proto │ │ ├── dynamicforkjointasklist.proto │ │ ├── eventexecution.proto │ │ ├── eventhandler.proto │ │ ├── executionmetadata.proto │ │ ├── polldata.proto │ │ ├── ratelimitconfig.proto │ │ ├── rerunworkflowrequest.proto │ │ ├── schemadef.proto │ │ ├── skiptaskrequest.proto │ │ ├── startworkflowrequest.proto │ │ ├── statechangeevent.proto │ │ ├── subworkflowparams.proto │ │ ├── task.proto │ │ ├── taskdef.proto │ │ ├── taskexeclog.proto │ │ ├── taskresult.proto │ │ ├── tasksummary.proto │ │ ├── upgradeworkflowrequest.proto │ │ ├── workflow.proto │ │ ├── workflowdef.proto │ │ ├── workflowdefsummary.proto │ │ ├── workflowsummary.proto │ │ └── workflowtask.proto │ └── test/ │ └── java/ │ └── com/ │ └── netflix/ │ └── conductor/ │ └── grpc/ │ └── TestProtoMapper.java ├── grpc-client/ │ ├── README.md │ ├── build.gradle │ └── src/ │ ├── main/ │ │ └── java/ │ │ └── com/ │ │ └── netflix/ │ │ └── conductor/ │ │ └── client/ │ │ └── grpc/ │ │ ├── ClientBase.java │ │ ├── EventClient.java │ │ ├── MetadataClient.java │ │ ├── TaskClient.java │ │ └── WorkflowClient.java │ └── test/ │ ├── java/ │ │ └── com/ │ │ └── netflix/ │ │ └── conductor/ │ │ └── client/ │ │ └── grpc/ │ │ ├── EventClientTest.java │ │ ├── TaskClientTest.java │ │ └── WorkflowClientTest.java │ └── resources/ │ └── mockito-extensions/ │ └── org.mockito.plugins.MockMaker ├── grpc-server/ │ ├── build.gradle │ └── src/ │ ├── main/ │ │ └── java/ │ │ └── com/ │ │ └── netflix/ │ │ └── conductor/ │ │ └── grpc/ │ │ └── server/ │ │ ├── GRPCServer.java │ │ ├── GRPCServerProperties.java │ │ ├── GrpcConfiguration.java │ │ └── service/ │ │ ├── EventServiceImpl.java │ │ ├── GRPCHelper.java │ │ ├── HealthServiceImpl.java │ │ ├── MetadataServiceImpl.java │ │ ├── TaskServiceImpl.java │ │ └── WorkflowServiceImpl.java │ └── test/ │ ├── java/ │ │ └── com/ │ │ └── netflix/ │ │ └── conductor/ │ │ └── grpc/ │ │ └── server/ │ │ └── service/ │ │ ├── HealthServiceImplTest.java │ │ ├── TaskServiceImplTest.java │ │ └── WorkflowServiceImplTest.java │ └── resources/ │ └── log4j.properties ├── hooks/ │ └── pre-commit ├── http-task/ │ ├── build.gradle │ └── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── netflix/ │ │ │ └── conductor/ │ │ │ └── tasks/ │ │ │ └── http/ │ │ │ ├── HttpTask.java │ │ │ └── providers/ │ │ │ ├── DefaultRestTemplateProvider.java │ │ │ └── RestTemplateProvider.java │ │ └── resources/ │ │ └── META-INF/ │ │ └── additional-spring-configuration-metadata.json │ └── test/ │ └── java/ │ └── com/ │ └── netflix/ │ └── conductor/ │ └── tasks/ │ └── http/ │ ├── HttpTaskTest.java │ ├── HttpTaskUnitTest.java │ └── providers/ │ └── DefaultRestTemplateProviderTest.java ├── json-jq-task/ │ ├── build.gradle │ └── src/ │ ├── main/ │ │ └── java/ │ │ └── com/ │ │ └── netflix/ │ │ └── conductor/ │ │ └── tasks/ │ │ └── json/ │ │ └── JsonJqTransform.java │ └── test/ │ └── java/ │ └── com/ │ └── netflix/ │ └── conductor/ │ └── tasks/ │ └── json/ │ └── JsonJqTransformTest.java ├── kafka/ │ ├── README.md │ ├── build.gradle │ └── src/ │ ├── main/ │ │ └── java/ │ │ └── com/ │ │ └── netflix/ │ │ └── conductor/ │ │ ├── contribs/ │ │ │ └── tasks/ │ │ │ └── kafka/ │ │ │ ├── KafkaProducerManager.java │ │ │ └── KafkaPublishTask.java │ │ └── core/ │ │ └── execution/ │ │ └── mapper/ │ │ └── KafkaPublishTaskMapper.java │ └── test/ │ ├── groovy/ │ │ └── com/ │ │ └── netflix/ │ │ └── conductor/ │ │ └── test/ │ │ └── integration/ │ │ └── KafkaPublishTaskSpec.groovy │ ├── java/ │ │ └── com/ │ │ └── netflix/ │ │ └── conductor/ │ │ ├── contribs/ │ │ │ └── tasks/ │ │ │ └── kafka/ │ │ │ ├── KafkaProducerManagerTest.java │ │ │ └── KafkaPublishTaskTest.java │ │ └── core/ │ │ └── execution/ │ │ └── mapper/ │ │ └── KafkaPublishTaskMapperTest.java │ └── resources/ │ ├── application-integrationtest.properties │ ├── input.json │ ├── output.json │ └── simple_json_jq_transform_integration_test.json ├── kafka-event-queue/ │ ├── README.md │ ├── build.gradle │ └── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── netflix/ │ │ │ └── conductor/ │ │ │ └── kafkaeq/ │ │ │ ├── config/ │ │ │ │ ├── KafkaEventQueueConfiguration.java │ │ │ │ ├── KafkaEventQueueProperties.java │ │ │ │ └── KafkaEventQueueProvider.java │ │ │ └── eventqueue/ │ │ │ └── KafkaObservableQueue.java │ │ └── resources/ │ │ └── META-INF/ │ │ └── additional-spring-configuration-metadata.json │ └── test/ │ └── java/ │ └── com/ │ └── netflix/ │ └── conductor/ │ └── kafkaeq/ │ └── eventqueue/ │ └── KafkaObservableQueueTest.java ├── licenseheader.txt ├── main.py ├── metrics/ │ ├── README.md │ ├── build.gradle │ └── src/ │ └── main/ │ └── java/ │ └── com/ │ └── netflix/ │ └── conductor/ │ └── contribs/ │ └── metrics/ │ ├── AzureMonitorMetricsConfiguration.java │ ├── CloudWatchMetricsConfiguration.java │ ├── LoggingMetricsConfiguration.java │ └── MetricsCollector.java ├── mkdocs.yml ├── mysql-persistence/ │ ├── build.gradle │ └── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── netflix/ │ │ │ └── conductor/ │ │ │ └── mysql/ │ │ │ ├── config/ │ │ │ │ ├── MySQLConfiguration.java │ │ │ │ └── MySQLProperties.java │ │ │ ├── dao/ │ │ │ │ ├── MySQLBaseDAO.java │ │ │ │ ├── MySQLExecutionDAO.java │ │ │ │ ├── MySQLMetadataDAO.java │ │ │ │ └── MySQLQueueDAO.java │ │ │ └── util/ │ │ │ ├── ExecuteFunction.java │ │ │ ├── LazyToString.java │ │ │ ├── Query.java │ │ │ ├── QueryFunction.java │ │ │ ├── ResultSetHandler.java │ │ │ └── TransactionalFunction.java │ │ └── resources/ │ │ └── db/ │ │ └── migration/ │ │ ├── V1__initial_schema.sql │ │ ├── V2__queue_message_timestamps.sql │ │ ├── V3__queue_add_priority.sql │ │ ├── V4__1009_Fix_MySQLExecutionDAO_Index.sql │ │ ├── V5__correlation_id_index.sql │ │ ├── V6__new_qm_index_with_priority.sql │ │ ├── V7__new_queue_message_pk.sql │ │ └── V8__update_pk.sql │ └── test/ │ ├── java/ │ │ └── com/ │ │ └── netflix/ │ │ └── conductor/ │ │ ├── mysql/ │ │ │ └── dao/ │ │ │ ├── MySQLExecutionDAOTest.java │ │ │ ├── MySQLMetadataDAOTest.java │ │ │ └── MySQLQueueDAOTest.java │ │ └── test/ │ │ └── integration/ │ │ └── grpc/ │ │ └── mysql/ │ │ └── MySQLGrpcEndToEndTest.java │ └── resources/ │ └── application.properties ├── nats/ │ ├── build.gradle │ └── src/ │ ├── main/ │ │ └── java/ │ │ └── com/ │ │ └── netflix/ │ │ └── conductor/ │ │ └── contribs/ │ │ └── queue/ │ │ └── nats/ │ │ ├── JetStreamObservableQueue.java │ │ ├── JsmMessage.java │ │ ├── LoggingNatsErrorListener.java │ │ ├── NATSAbstractQueue.java │ │ ├── NATSObservableQueue.java │ │ ├── NatsException.java │ │ └── config/ │ │ ├── JetStreamConfiguration.java │ │ ├── JetStreamEventQueueProvider.java │ │ ├── JetStreamProperties.java │ │ ├── NATSConfiguration.java │ │ └── NATSEventQueueProvider.java │ └── test/ │ └── java/ │ └── com/ │ └── netflix/ │ └── conductor/ │ └── contribs/ │ └── queue/ │ └── nats/ │ └── JetStreamObservableQueueTest.java ├── nats-streaming/ │ ├── README.md │ ├── build.gradle │ └── src/ │ └── main/ │ └── java/ │ └── com/ │ └── netflix/ │ └── conductor/ │ └── contribs/ │ └── queue/ │ └── stan/ │ ├── NATSAbstractQueue.java │ ├── NATSObservableQueue.java │ ├── NATSStreamObservableQueue.java │ └── config/ │ ├── NATSConfiguration.java │ ├── NATSEventQueueProvider.java │ ├── NATSStreamConfiguration.java │ ├── NATSStreamEventQueueProvider.java │ └── NATSStreamProperties.java ├── os-persistence/ │ ├── README.md │ ├── build.gradle │ └── src/ │ ├── main/ │ │ └── java/ │ │ └── com/ │ │ └── netflix/ │ │ └── conductor/ │ │ └── os/ │ │ └── config/ │ │ └── OpenSearchDeprecationConfiguration.java │ └── test/ │ └── java/ │ └── com/ │ └── netflix/ │ └── conductor/ │ └── os/ │ └── config/ │ └── OpenSearchDeprecationTest.java ├── os-persistence-v2/ │ ├── README.md │ ├── build.gradle │ └── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── org/ │ │ │ └── conductoross/ │ │ │ └── conductor/ │ │ │ └── os2/ │ │ │ ├── config/ │ │ │ │ ├── OpenSearchConditions.java │ │ │ │ ├── OpenSearchConfiguration.java │ │ │ │ └── OpenSearchProperties.java │ │ │ └── dao/ │ │ │ ├── index/ │ │ │ │ ├── BulkRequestBuilderWrapper.java │ │ │ │ ├── BulkRequestWrapper.java │ │ │ │ ├── OpenSearchBaseDAO.java │ │ │ │ └── OpenSearchRestDAO.java │ │ │ └── query/ │ │ │ └── parser/ │ │ │ ├── Expression.java │ │ │ ├── FilterProvider.java │ │ │ ├── GroupedExpression.java │ │ │ ├── NameValue.java │ │ │ └── internal/ │ │ │ ├── AbstractNode.java │ │ │ ├── BooleanOp.java │ │ │ ├── ComparisonOp.java │ │ │ ├── ConstValue.java │ │ │ ├── FunctionThrowingException.java │ │ │ ├── ListConst.java │ │ │ ├── Name.java │ │ │ ├── ParserException.java │ │ │ └── Range.java │ │ └── resources/ │ │ ├── META-INF/ │ │ │ └── spring/ │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ │ ├── mappings_docType_task.json │ │ ├── mappings_docType_workflow.json │ │ ├── template_event.json │ │ ├── template_message.json │ │ └── template_task_log.json │ └── test/ │ ├── java/ │ │ └── org/ │ │ └── conductoross/ │ │ └── conductor/ │ │ └── os2/ │ │ ├── config/ │ │ │ └── OpenSearchPropertiesTest.java │ │ ├── dao/ │ │ │ ├── index/ │ │ │ │ ├── OpenSearchRestDaoBaseTest.java │ │ │ │ ├── OpenSearchTest.java │ │ │ │ ├── TestBulkRequestBuilderWrapper.java │ │ │ │ ├── TestOpenSearchRestDAO.java │ │ │ │ └── TestOpenSearchRestDAOBatch.java │ │ │ └── query/ │ │ │ └── parser/ │ │ │ ├── TestExpression.java │ │ │ ├── TestGroupedExpression.java │ │ │ └── internal/ │ │ │ ├── AbstractParserTest.java │ │ │ ├── TestBooleanOp.java │ │ │ ├── TestComparisonOp.java │ │ │ ├── TestConstValue.java │ │ │ └── TestName.java │ │ └── utils/ │ │ └── TestUtils.java │ └── resources/ │ ├── expected_template_task_log.json │ ├── task_summary.json │ └── workflow_summary.json ├── os-persistence-v3/ │ ├── MIGRATION_GUIDE.md │ ├── MIGRATION_PLAN.md │ ├── README.md │ ├── build.gradle │ └── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── org/ │ │ │ └── conductoross/ │ │ │ └── conductor/ │ │ │ └── os3/ │ │ │ ├── config/ │ │ │ │ ├── OpenSearchConditions.java │ │ │ │ ├── OpenSearchConfiguration.java │ │ │ │ └── OpenSearchProperties.java │ │ │ └── dao/ │ │ │ ├── index/ │ │ │ │ ├── OpenSearchBaseDAO.java │ │ │ │ ├── OpenSearchRestDAO.java │ │ │ │ └── QueryHelper.java │ │ │ └── query/ │ │ │ └── parser/ │ │ │ ├── Expression.java │ │ │ ├── FilterProvider.java │ │ │ ├── GroupedExpression.java │ │ │ ├── NameValue.java │ │ │ └── internal/ │ │ │ ├── AbstractNode.java │ │ │ ├── BooleanOp.java │ │ │ ├── ComparisonOp.java │ │ │ ├── ConstValue.java │ │ │ ├── FunctionThrowingException.java │ │ │ ├── ListConst.java │ │ │ ├── Name.java │ │ │ ├── ParserException.java │ │ │ └── Range.java │ │ └── resources/ │ │ ├── META-INF/ │ │ │ └── spring/ │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ │ ├── mappings_docType_task.json │ │ ├── mappings_docType_workflow.json │ │ ├── template_event.json │ │ ├── template_message.json │ │ └── template_task_log.json │ └── test/ │ ├── java/ │ │ └── org/ │ │ └── conductoross/ │ │ └── conductor/ │ │ └── os3/ │ │ ├── config/ │ │ │ ├── OpenSearchModuleActivationTest.java.bak │ │ │ ├── OpenSearchModuleActivationTest.java.bak2 │ │ │ └── OpenSearchPropertiesTest.java │ │ ├── dao/ │ │ │ ├── index/ │ │ │ │ ├── OpenSearchRestDaoBaseTest.java │ │ │ │ ├── OpenSearchTest.java │ │ │ │ ├── QuickV3Test.java │ │ │ │ ├── TestOpenSearchRestDAO.java │ │ │ │ └── TestOpenSearchRestDAOBatch.java │ │ │ └── query/ │ │ │ └── parser/ │ │ │ ├── TestExpression.java │ │ │ ├── TestGroupedExpression.java │ │ │ └── internal/ │ │ │ ├── AbstractParserTest.java │ │ │ ├── TestBooleanOp.java │ │ │ ├── TestComparisonOp.java │ │ │ ├── TestConstValue.java │ │ │ └── TestName.java │ │ └── utils/ │ │ └── TestUtils.java │ └── resources/ │ ├── expected_template_task_log.json │ ├── task_summary.json │ └── workflow_summary.json ├── polyglot-clients/ │ └── README.md ├── postgres-external-storage/ │ ├── README.md │ ├── build.gradle │ └── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── netflix/ │ │ │ └── conductor/ │ │ │ └── postgres/ │ │ │ ├── config/ │ │ │ │ ├── PostgresPayloadConfiguration.java │ │ │ │ └── PostgresPayloadProperties.java │ │ │ ├── controller/ │ │ │ │ └── ExternalPostgresPayloadResource.java │ │ │ └── storage/ │ │ │ └── PostgresPayloadStorage.java │ │ └── resources/ │ │ └── db/ │ │ └── migration_external_postgres/ │ │ └── R__initial_schema.sql │ └── test/ │ └── java/ │ └── com/ │ └── netflix/ │ └── conductor/ │ └── postgres/ │ ├── controller/ │ │ └── ExternalPostgresPayloadResourceTest.java │ └── storage/ │ ├── PostgresPayloadStorageTest.java │ └── PostgresPayloadTestUtil.java ├── postgres-persistence/ │ ├── build.gradle │ └── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── netflix/ │ │ │ └── conductor/ │ │ │ └── postgres/ │ │ │ ├── config/ │ │ │ │ ├── PostgresConfiguration.java │ │ │ │ └── PostgresProperties.java │ │ │ ├── dao/ │ │ │ │ ├── PostgresBaseDAO.java │ │ │ │ ├── PostgresExecutionDAO.java │ │ │ │ ├── PostgresIndexDAO.java │ │ │ │ ├── PostgresLockDAO.java │ │ │ │ ├── PostgresMetadataDAO.java │ │ │ │ ├── PostgresPollDataDAO.java │ │ │ │ └── PostgresQueueDAO.java │ │ │ └── util/ │ │ │ ├── ExecuteFunction.java │ │ │ ├── ExecutorsUtil.java │ │ │ ├── LazyToString.java │ │ │ ├── PostgresIndexQueryBuilder.java │ │ │ ├── PostgresQueueListener.java │ │ │ ├── Query.java │ │ │ ├── QueryFunction.java │ │ │ ├── QueueStats.java │ │ │ ├── ResultSetHandler.java │ │ │ └── TransactionalFunction.java │ │ └── resources/ │ │ └── db/ │ │ ├── migration_postgres/ │ │ │ ├── V10__poll_data_check.sql │ │ │ ├── V11__locking.sql │ │ │ ├── V12__task_index_columns.sql │ │ │ ├── V13.1__workflow_index_columns.sql │ │ │ ├── V1__initial_schema.sql │ │ │ ├── V2__1009_Fix_PostgresExecutionDAO_Index.sql │ │ │ ├── V3__correlation_id_index.sql │ │ │ ├── V4__new_qm_index_with_priority.sql │ │ │ ├── V5__new_queue_message_pk.sql │ │ │ ├── V6__update_pk.sql │ │ │ ├── V7__new_qm_index_desc_priority.sql │ │ │ ├── V8__indexing.sql │ │ │ └── V9__indexing_index_fix.sql │ │ ├── migration_postgres_data/ │ │ │ └── V13.2__workflow_index_backfill_update_time.sql │ │ └── migration_postgres_notify/ │ │ └── V10.1__notify.sql │ └── test/ │ ├── java/ │ │ └── com/ │ │ └── netflix/ │ │ └── conductor/ │ │ ├── postgres/ │ │ │ ├── config/ │ │ │ │ └── PostgresConfigurationDataMigrationTest.java │ │ │ ├── dao/ │ │ │ │ ├── PostgresExecutionDAOTest.java │ │ │ │ ├── PostgresIndexDAOStatusChangeOnlyTest.java │ │ │ │ ├── PostgresIndexDAOTest.java │ │ │ │ ├── PostgresLockDAOTest.java │ │ │ │ ├── PostgresMetadataDAOTest.java │ │ │ │ ├── PostgresPollDataDAOCacheTest.java │ │ │ │ ├── PostgresPollDataDAONoCacheTest.java │ │ │ │ └── PostgresQueueDAOTest.java │ │ │ ├── performance/ │ │ │ │ └── PerformanceTest.java │ │ │ └── util/ │ │ │ ├── PostgresIndexQueryBuilderTest.java │ │ │ └── PostgresQueueListenerTest.java │ │ └── test/ │ │ └── integration/ │ │ └── grpc/ │ │ └── postgres/ │ │ └── PostgresGrpcEndToEndTest.java │ └── resources/ │ └── application.properties ├── redis-concurrency-limit/ │ ├── build.gradle │ └── src/ │ ├── main/ │ │ └── java/ │ │ └── com/ │ │ └── netflix/ │ │ └── conductor/ │ │ └── redis/ │ │ └── limit/ │ │ ├── RedisConcurrentExecutionLimitDAO.java │ │ └── config/ │ │ ├── RedisConcurrentExecutionLimitConfiguration.java │ │ └── RedisConcurrentExecutionLimitProperties.java │ └── test/ │ └── groovy/ │ └── com/ │ └── netflix/ │ └── conductor/ │ └── redis/ │ └── limit/ │ └── RedisConcurrentExecutionLimitDAOSpec.groovy ├── redis-lock/ │ ├── build.gradle │ └── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── netflix/ │ │ │ └── conductor/ │ │ │ └── redislock/ │ │ │ ├── config/ │ │ │ │ ├── RedisHealthIndicator.java │ │ │ │ ├── RedisLockConfiguration.java │ │ │ │ └── RedisLockProperties.java │ │ │ └── lock/ │ │ │ └── RedisLock.java │ │ └── resources/ │ │ └── META-INF/ │ │ └── additional-spring-configuration-metadata.json │ └── test/ │ └── java/ │ └── com/ │ └── netflix/ │ └── conductor/ │ ├── redis/ │ │ └── lock/ │ │ └── RedisLockTest.java │ └── redislock/ │ └── config/ │ └── RedisHealthIndicatorTest.java ├── redis-persistence/ │ ├── build.gradle │ └── src/ │ ├── main/ │ │ └── java/ │ │ └── com/ │ │ └── netflix/ │ │ ├── conductor/ │ │ │ └── redis/ │ │ │ ├── config/ │ │ │ │ ├── AnyRedisCondition.java │ │ │ │ ├── InMemoryRedisConfiguration.java │ │ │ │ ├── JedisCommandsConfigurer.java │ │ │ │ ├── RedisClusterConfiguration.java │ │ │ │ ├── RedisProperties.java │ │ │ │ ├── RedisSentinelConfiguration.java │ │ │ │ └── RedisStandaloneConfiguration.java │ │ │ ├── dao/ │ │ │ │ ├── BaseDynoDAO.java │ │ │ │ ├── RedisEventHandlerDAO.java │ │ │ │ ├── RedisExecutionDAO.java │ │ │ │ ├── RedisMetadataDAO.java │ │ │ │ ├── RedisPollDataDAO.java │ │ │ │ └── RedisRateLimitingDAO.java │ │ │ ├── dynoqueue/ │ │ │ │ ├── ConfigurationHostSupplier.java │ │ │ │ └── LocalhostHostSupplier.java │ │ │ └── jedis/ │ │ │ ├── JedisCluster.java │ │ │ ├── JedisMock.java │ │ │ ├── JedisProxy.java │ │ │ ├── JedisSentinel.java │ │ │ └── JedisStandalone.java │ │ └── dyno/ │ │ └── connectionpool/ │ │ ├── Host.java │ │ ├── HostBuilder.java │ │ └── HostSupplier.java │ └── test/ │ └── java/ │ └── com/ │ └── netflix/ │ └── conductor/ │ └── redis/ │ ├── dao/ │ │ ├── BaseDynoDAOTest.java │ │ ├── RedisEventHandlerDAOTest.java │ │ ├── RedisExecutionDAOTest.java │ │ ├── RedisMetadataDAOTest.java │ │ ├── RedisPollDataDAOTest.java │ │ └── RedisRateLimitDAOTest.java │ └── jedis/ │ ├── ConfigurationHostSupplierTest.java │ ├── JedisClusterTest.java │ └── JedisSentinelTest.java ├── requirements.txt ├── rest/ │ ├── build.gradle │ └── src/ │ ├── main/ │ │ ├── java/ │ │ │ ├── com/ │ │ │ │ └── netflix/ │ │ │ │ └── conductor/ │ │ │ │ └── rest/ │ │ │ │ ├── config/ │ │ │ │ │ └── RequestMappingConstants.java │ │ │ │ ├── controllers/ │ │ │ │ │ ├── AdminResource.java │ │ │ │ │ ├── ApplicationExceptionMapper.java │ │ │ │ │ ├── EventResource.java │ │ │ │ │ ├── HealthCheckResource.java │ │ │ │ │ ├── MetadataResource.java │ │ │ │ │ ├── QueueAdminResource.java │ │ │ │ │ ├── TaskResource.java │ │ │ │ │ ├── ValidationExceptionMapper.java │ │ │ │ │ ├── WorkflowBulkResource.java │ │ │ │ │ └── WorkflowResource.java │ │ │ │ └── startup/ │ │ │ │ └── KitchenSinkInitializer.java │ │ │ └── org/ │ │ │ └── conductoross/ │ │ │ └── conductor/ │ │ │ ├── RestConfiguration.java │ │ │ ├── SpaInterceptor.java │ │ │ └── controllers/ │ │ │ └── VersionResource.java │ │ └── resources/ │ │ ├── kitchensink/ │ │ │ ├── kitchenSink-ephemeralWorkflowWithEphemeralTasks.json │ │ │ ├── kitchenSink-ephemeralWorkflowWithStoredTasks.json │ │ │ ├── kitchensink.json │ │ │ ├── sub_flow_1.json │ │ │ ├── wf1.json │ │ │ └── wf2.json │ │ └── static/ │ │ └── index.html │ └── test/ │ └── java/ │ ├── com/ │ │ └── netflix/ │ │ └── conductor/ │ │ └── rest/ │ │ └── controllers/ │ │ ├── AdminResourceTest.java │ │ ├── ApplicationExceptionMapperTest.java │ │ ├── EventResourceTest.java │ │ ├── MetadataResourceTest.java │ │ ├── TaskResourceTest.java │ │ └── WorkflowResourceTest.java │ └── org/ │ └── conductoross/ │ └── conductor/ │ └── SpaInterceptorTest.java ├── scheduler/ │ ├── SCHEDULER_DAO_TEST_PLAN.md │ ├── build.gradle │ └── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── org/ │ │ │ └── conductoross/ │ │ │ └── conductor/ │ │ │ └── scheduler/ │ │ │ ├── config/ │ │ │ │ ├── SchedulerProperties.java │ │ │ │ └── WorkflowSchedulerConfiguration.java │ │ │ ├── dao/ │ │ │ │ ├── SchedulerCacheDAO.java │ │ │ │ └── SchedulerDAO.java │ │ │ ├── model/ │ │ │ │ ├── WorkflowSchedule.java │ │ │ │ └── WorkflowScheduleExecution.java │ │ │ ├── rest/ │ │ │ │ └── SchedulerResource.java │ │ │ └── service/ │ │ │ └── SchedulerService.java │ │ └── resources/ │ │ └── META-INF/ │ │ └── spring/ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ ├── test/ │ │ ├── java/ │ │ │ └── org/ │ │ │ └── conductoross/ │ │ │ └── conductor/ │ │ │ └── scheduler/ │ │ │ ├── config/ │ │ │ │ └── TestObjectMapperConfiguration.java │ │ │ ├── rest/ │ │ │ │ ├── SchedulerResourceHttpTest.java │ │ │ │ └── SchedulerResourceTest.java │ │ │ └── service/ │ │ │ ├── SchedulerServicePhase2Test.java │ │ │ ├── SchedulerServiceStressTest.java │ │ │ └── SchedulerServiceTest.java │ │ └── resources/ │ │ └── application.properties │ └── testFixtures/ │ └── java/ │ └── org/ │ └── conductoross/ │ └── conductor/ │ └── scheduler/ │ ├── config/ │ │ └── AbstractSchedulerAutoConfigurationSmokeTest.java │ ├── dao/ │ │ └── AbstractSchedulerDAOTest.java │ └── service/ │ └── AbstractSchedulerServiceIntegrationTest.java ├── scheduler-mysql-persistence/ │ ├── build.gradle │ └── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── org/ │ │ │ └── conductoross/ │ │ │ └── conductor/ │ │ │ └── scheduler/ │ │ │ └── mysql/ │ │ │ ├── config/ │ │ │ │ └── MySQLSchedulerConfiguration.java │ │ │ └── dao/ │ │ │ └── MySQLSchedulerDAO.java │ │ └── resources/ │ │ ├── META-INF/ │ │ │ └── spring/ │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ │ └── db/ │ │ └── migration_scheduler_mysql/ │ │ └── V1__scheduler_tables.sql │ └── test/ │ ├── java/ │ │ └── org/ │ │ └── conductoross/ │ │ └── conductor/ │ │ └── scheduler/ │ │ └── mysql/ │ │ ├── config/ │ │ │ └── MySQLSchedulerAutoConfigurationSmokeTest.java │ │ ├── dao/ │ │ │ └── MySQLSchedulerDAOTest.java │ │ └── service/ │ │ └── MySQLSchedulerServiceIntegrationTest.java │ └── resources/ │ └── application.properties ├── scheduler-postgres-persistence/ │ ├── build.gradle │ └── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── org/ │ │ │ └── conductoross/ │ │ │ └── conductor/ │ │ │ └── scheduler/ │ │ │ └── postgres/ │ │ │ ├── config/ │ │ │ │ └── PostgresSchedulerConfiguration.java │ │ │ └── dao/ │ │ │ └── PostgresSchedulerDAO.java │ │ └── resources/ │ │ ├── META-INF/ │ │ │ └── spring/ │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ │ └── db/ │ │ └── migration_scheduler/ │ │ └── V1__scheduler_tables.sql │ └── test/ │ ├── java/ │ │ └── org/ │ │ └── conductoross/ │ │ └── conductor/ │ │ └── scheduler/ │ │ └── postgres/ │ │ ├── config/ │ │ │ └── PostgresSchedulerAutoConfigurationSmokeTest.java │ │ ├── dao/ │ │ │ └── PostgresSchedulerDAOTest.java │ │ └── service/ │ │ └── PostgresSchedulerServiceIntegrationTest.java │ └── resources/ │ └── application.properties ├── schemas/ │ ├── README.md │ ├── Task.json │ ├── TaskDef.json │ ├── Workflow.json │ └── WorkflowDef.json ├── scripts/ │ └── fetch-sdk-docs.py ├── serve-docs.sh ├── server/ │ ├── build.gradle │ └── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── netflix/ │ │ │ └── conductor/ │ │ │ └── Conductor.java │ │ └── resources/ │ │ ├── META-INF/ │ │ │ └── additional-spring-configuration-metadata.json │ │ ├── application.properties │ │ ├── banner.txt │ │ └── log4j2.xml │ └── test/ │ └── java/ │ └── com/ │ └── netflix/ │ └── conductor/ │ └── common/ │ └── config/ │ └── ConductorObjectMapperTest.java ├── server-lite/ │ ├── build.gradle │ ├── build_ui.sh │ └── src/ │ └── main/ │ ├── java/ │ │ └── org/ │ │ └── conductoross/ │ │ └── conductor/ │ │ └── Conductor.java │ └── resources/ │ └── application.properties ├── settings.gradle ├── springboot-bom-overrides.gradle ├── sqlite-persistence/ │ ├── build.gradle │ └── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── netflix/ │ │ │ └── conductor/ │ │ │ └── sqlite/ │ │ │ ├── config/ │ │ │ │ ├── SqliteConfiguration.java │ │ │ │ └── SqliteProperties.java │ │ │ ├── dao/ │ │ │ │ ├── SqliteBaseDAO.java │ │ │ │ ├── SqliteExecutionDAO.java │ │ │ │ ├── SqliteIndexDAO.java │ │ │ │ ├── SqlitePollDataDAO.java │ │ │ │ ├── SqliteQueueDAO.java │ │ │ │ └── metadata/ │ │ │ │ ├── SqliteEventHandlerMetadataDAO.java │ │ │ │ ├── SqliteMetadataDAO.java │ │ │ │ ├── SqliteTaskMetadataDAO.java │ │ │ │ └── SqliteWorkflowMetadataDAO.java │ │ │ └── util/ │ │ │ ├── ExecuteFunction.java │ │ │ ├── ExecutorsUtil.java │ │ │ ├── LazyToString.java │ │ │ ├── Query.java │ │ │ ├── QueryFunction.java │ │ │ ├── QueueStats.java │ │ │ ├── ResultSetHandler.java │ │ │ ├── SqliteIndexQueryBuilder.java │ │ │ └── TransactionalFunction.java │ │ └── resources/ │ │ └── db/ │ │ └── migration_sqlite/ │ │ └── V1__initial_schema.sql │ └── test/ │ ├── java/ │ │ └── com/ │ │ └── netflix/ │ │ └── conductor/ │ │ └── sqlite/ │ │ └── dao/ │ │ ├── SqliteExecutionDAOTest.java │ │ ├── SqliteIndexDAOTest.java │ │ ├── SqliteMetadataDAOTest.java │ │ ├── SqlitePollDataTest.java │ │ └── SqliteQueueDAOTest.java │ └── resources/ │ └── application.properties ├── task-status-listener/ │ ├── build.gradle │ └── src/ │ └── main/ │ └── java/ │ └── com/ │ └── netflix/ │ └── conductor/ │ └── contribs/ │ └── listener/ │ ├── RestClientManager.java │ ├── StatusNotifier.java │ ├── StatusNotifierNotificationProperties.java │ ├── TaskNotification.java │ ├── TaskStatusPublisher.java │ └── TaskStatusPublisherConfiguration.java ├── test-harness/ │ ├── build.gradle │ └── src/ │ └── test/ │ ├── groovy/ │ │ └── com/ │ │ └── netflix/ │ │ └── conductor/ │ │ └── test/ │ │ ├── base/ │ │ │ ├── AbstractResiliencySpecification.groovy │ │ │ └── AbstractSpecification.groovy │ │ ├── integration/ │ │ │ ├── DecisionTaskSpec.groovy │ │ │ ├── DoWhileSpec.groovy │ │ │ ├── DynamicForkJoinSpec.groovy │ │ │ ├── EventTaskSpec.groovy │ │ │ ├── ExclusiveJoinSpec.groovy │ │ │ ├── ExternalPayloadStorageSpec.groovy │ │ │ ├── FailureWorkflowSpec.groovy │ │ │ ├── ForkJoinSpec.groovy │ │ │ ├── HierarchicalForkJoinSubworkflowRerunSpec.groovy │ │ │ ├── HierarchicalForkJoinSubworkflowRestartSpec.groovy │ │ │ ├── HierarchicalForkJoinSubworkflowRetrySpec.groovy │ │ │ ├── JsonJQTransformSpec.groovy │ │ │ ├── LambdaAndTerminateTaskSpec.groovy │ │ │ ├── NestedForkJoinSubWorkflowSpec.groovy │ │ │ ├── S3ExternalPayloadStorageE2ESpec.groovy │ │ │ ├── SQSEventQueueE2ESpec.groovy │ │ │ ├── SetVariableTaskSpec.groovy │ │ │ ├── SimpleWorkflowSpec.groovy │ │ │ ├── StartWorkflowSpec.groovy │ │ │ ├── SubWorkflowRerunSpec.groovy │ │ │ ├── SubWorkflowRestartSpec.groovy │ │ │ ├── SubWorkflowRetrySpec.groovy │ │ │ ├── SubWorkflowSpec.groovy │ │ │ ├── SwitchTaskSpec.groovy │ │ │ ├── SystemTaskSpec.groovy │ │ │ ├── TaskLimitsWorkflowSpec.groovy │ │ │ ├── TestWorkflowSpec.groovy │ │ │ ├── WaitTaskSpec.groovy │ │ │ └── WorkflowAndTaskConfigurationSpec.groovy │ │ ├── resiliency/ │ │ │ ├── QueueResiliencySpec.groovy │ │ │ └── TaskResiliencySpec.groovy │ │ └── util/ │ │ └── WorkflowTestUtil.groovy │ ├── java/ │ │ └── com/ │ │ └── netflix/ │ │ └── conductor/ │ │ ├── ConductorTestApp.java │ │ └── test/ │ │ ├── config/ │ │ │ ├── LocalStackS3Configuration.java │ │ │ └── LocalStackSQSConfiguration.java │ │ ├── integration/ │ │ │ ├── TestHarnessAbstractEndToEndTest.java │ │ │ ├── grpc/ │ │ │ │ ├── GrpcEndToEndTest.java │ │ │ │ └── TestHarnessAbstractGrpcEndToEndTest.java │ │ │ └── http/ │ │ │ ├── ForkJoinSyncModeIntegrationTest.java │ │ │ ├── HttpEndToEndTestTestHarness.java │ │ │ └── TestHarnessAbstractHttpEndToEndTest.java │ │ └── utils/ │ │ ├── MockExternalPayloadStorage.java │ │ └── UserTask.java │ └── resources/ │ ├── application-integrationtest.properties │ ├── application-s3test.properties │ ├── application-sqstest.properties │ ├── concurrency_limited_task_workflow_integration_test.json │ ├── conditional_switch_task_workflow_integration_test.json │ ├── conditional_system_task_workflow_integration_test.json │ ├── conditional_task_workflow_integration_test.json │ ├── decision_and_fork_join_integration_test.json │ ├── decision_and_terminate_integration_test.json │ ├── do_while_as_subtask_integration_test.json │ ├── do_while_cleanup_demo.json │ ├── do_while_five_loop_over_integration_test.json │ ├── do_while_high_iteration_test.json │ ├── do_while_integration_test.json │ ├── do_while_iteration_fix_test.json │ ├── do_while_multiple_integration_test.json │ ├── do_while_set_variable_fix.json │ ├── do_while_sub_workflow_integration_test.json │ ├── do_while_system_tasks.json │ ├── do_while_timeline_ui_demo.json │ ├── do_while_with_decision_task.json │ ├── dynamic_fork_join_integration_test.json │ ├── event_workflow_integration_test.json │ ├── exclusive_join_integration_test.json │ ├── failure_workflow_for_terminate_task_workflow.json │ ├── fork_join_integration_test.json │ ├── fork_join_permissive_integration_test.json │ ├── fork_join_sub_workflow.json │ ├── fork_join_sync_mode_integration_test.json │ ├── fork_join_sync_nested_integration_test.json │ ├── fork_join_sync_optional_fail_integration_test.json │ ├── fork_join_with_no_permissive_task_retry_integration_test.json │ ├── fork_join_with_no_task_retry_integration_test.json │ ├── fork_join_with_optional_sub_workflow_forks_integration_test.json │ ├── hierarchical_fork_join_swf.json │ ├── input.json │ ├── json_jq_transform_result_integration_test.json │ ├── nested_fork_join_integration_test.json │ ├── nested_fork_join_swf.json │ ├── nested_fork_join_with_sub_workflow_integration_test.json │ ├── output.json │ ├── rate_limited_simple_task_workflow_integration_test.json │ ├── rate_limited_system_task_workflow_integration_test.json │ ├── sequential_json_jq_transform_integration_test.json │ ├── set_variable_workflow_integration_test.json │ ├── simple_decision_task_integration_test.json │ ├── simple_json_jq_transform_integration_test.json │ ├── simple_lambda_workflow_integration_test.json │ ├── simple_one_task_sub_workflow_integration_test.json │ ├── simple_set_variable_workflow_integration_test.json │ ├── simple_switch_task_integration_test.json │ ├── simple_wait_task_workflow_integration_test.json │ ├── simple_workflow_1_input_template_integration_test.json │ ├── simple_workflow_1_integration_test.json │ ├── simple_workflow_3_integration_test.json │ ├── simple_workflow_with_async_complete_system_task_integration_test.json │ ├── simple_workflow_with_optional_task_integration_test.json │ ├── simple_workflow_with_permissive_optional_task_integration_test.json │ ├── simple_workflow_with_permissive_task_integration_test.json │ ├── simple_workflow_with_resp_time_out_integration_test.json │ ├── simple_workflow_with_sub_workflow_inline_def_integration_test.json │ ├── sqs-complete-wait-event-handler.json │ ├── sqs-test-workflow.json │ ├── start_workflow_input.json │ ├── switch_and_fork_join_integration_test.json │ ├── switch_and_terminate_integration_test.json │ ├── switch_with_no_default_case_integration_test.json │ ├── terminate_task_completed_workflow_integration_test.json │ ├── terminate_task_failed_workflow_integration.json │ ├── terminate_task_parent_workflow.json │ ├── terminate_task_sub_workflow.json │ ├── terminate_task_terminated_status_in_do_while_test.json │ ├── terminate_task_terminated_status_test.json │ ├── test_task_failed_parent_workflow.json │ ├── test_task_failed_sub_workflow.json │ ├── wait_workflow_integration_test.json │ ├── workflow_that_starts_another_workflow.json │ ├── workflow_with_sub_workflow_1_integration_test.json │ └── workflow_with_synchronous_system_task.json ├── test-util/ │ ├── build.gradle │ └── src/ │ └── test/ │ ├── groovy/ │ │ └── com/ │ │ └── netflix/ │ │ └── conductor/ │ │ └── test/ │ │ ├── base/ │ │ │ ├── AbstractResiliencySpecification.groovy │ │ │ └── AbstractSpecification.groovy │ │ └── util/ │ │ └── WorkflowTestUtil.groovy │ ├── java/ │ │ └── com/ │ │ └── netflix/ │ │ └── conductor/ │ │ ├── ConductorTestApp.java │ │ ├── common/ │ │ │ └── config/ │ │ │ └── TestObjectMapperConfiguration.java │ │ └── test/ │ │ └── integration/ │ │ ├── AbstractEndToEndTest.java │ │ └── grpc/ │ │ └── AbstractGrpcEndToEndTest.java │ └── resources/ │ └── application-integrationtest.properties ├── test-workflow.sh ├── ui/ │ ├── .eslintrc │ ├── .gitignore │ ├── .prettierignore │ ├── .prettierrc.json │ ├── README.md │ ├── cypress/ │ │ ├── e2e/ │ │ │ └── spec.cy.js │ │ ├── fixtures/ │ │ │ ├── doWhile/ │ │ │ │ └── doWhileSwitch.json │ │ │ ├── dynamicFork/ │ │ │ │ ├── externalizedInput.json │ │ │ │ ├── noneSpawned.json │ │ │ │ ├── notExecuted.json │ │ │ │ ├── oneFailed.json │ │ │ │ └── success.json │ │ │ ├── dynamicFork.json │ │ │ ├── metadataTasks.json │ │ │ ├── metadataWorkflow.json │ │ │ ├── taskSearch.json │ │ │ └── workflowSearch.json │ │ └── support/ │ │ ├── commands.ts │ │ ├── component-index.html │ │ ├── component.ts │ │ └── e2e.ts │ ├── cypress.config.ts │ ├── package.json │ ├── public/ │ │ ├── index.html │ │ └── robots.txt │ ├── src/ │ │ ├── App.jsx │ │ ├── components/ │ │ │ ├── Banner.jsx │ │ │ ├── Button.jsx │ │ │ ├── ButtonGroup.jsx │ │ │ ├── ConfirmChoiceDialog.jsx │ │ │ ├── CustomButtons.jsx │ │ │ ├── DataTable.jsx │ │ │ ├── DateRangePicker.jsx │ │ │ ├── Dropdown.jsx │ │ │ ├── DropdownButton.jsx │ │ │ ├── Heading.jsx │ │ │ ├── Input.jsx │ │ │ ├── KeyValueTable.jsx │ │ │ ├── LinearProgress.jsx │ │ │ ├── NavLink.jsx │ │ │ ├── Paper.jsx │ │ │ ├── Pill.jsx │ │ │ ├── PrimaryButton.jsx │ │ │ ├── ReactJson.jsx │ │ │ ├── SecondaryButton.jsx │ │ │ ├── Select.jsx │ │ │ ├── SplitButton.jsx │ │ │ ├── StatusBadge.jsx │ │ │ ├── Tabs.jsx │ │ │ ├── TaskLink.jsx │ │ │ ├── TaskNameInput.jsx │ │ │ ├── TertiaryButton.jsx │ │ │ ├── Text.jsx │ │ │ ├── WorkflowNameInput.jsx │ │ │ ├── definitionList/ │ │ │ │ └── DefinitionList.jsx │ │ │ ├── diagram/ │ │ │ │ ├── PanAndZoomWrapper.jsx │ │ │ │ ├── TaskPointer.d.ts │ │ │ │ ├── TaskResult.d.ts │ │ │ │ ├── WorkflowDAG.js │ │ │ │ ├── WorkflowGraph.jsx │ │ │ │ ├── WorkflowGraph.test.cy.js │ │ │ │ ├── ZoomControlButton.jsx │ │ │ │ ├── ZoomControls.jsx │ │ │ │ └── diagram.scss │ │ │ ├── formik/ │ │ │ │ ├── FormikCronEditor.jsx │ │ │ │ ├── FormikDropdown.jsx │ │ │ │ ├── FormikInput.jsx │ │ │ │ ├── FormikJsonInput.jsx │ │ │ │ ├── FormikStatusDropdown.jsx │ │ │ │ ├── FormikSwitch.jsx │ │ │ │ ├── FormikVersionDropdown.jsx │ │ │ │ ├── FormikWorkflowNameInput.jsx │ │ │ │ └── cron.css │ │ │ ├── icons/ │ │ │ │ ├── FitToFrame.jsx │ │ │ │ ├── Home.jsx │ │ │ │ ├── Minus.jsx │ │ │ │ └── Plus.jsx │ │ │ └── index.js │ │ ├── data/ │ │ │ ├── actions.js │ │ │ ├── bulkactions.js │ │ │ ├── common.js │ │ │ ├── eventHandler.js │ │ │ ├── misc.js │ │ │ ├── task.js │ │ │ └── workflow.js │ │ ├── hooks/ │ │ │ └── useTime.js │ │ ├── index.css │ │ ├── index.js │ │ ├── pages/ │ │ │ ├── definition/ │ │ │ │ ├── EventHandlerDefinition.jsx │ │ │ │ ├── ResetConfirmationDialog.jsx │ │ │ │ ├── SaveEventHandlerDialog.jsx │ │ │ │ ├── SaveTaskDialog.jsx │ │ │ │ ├── SaveWorkflowDialog.jsx │ │ │ │ ├── TaskDefinition.jsx │ │ │ │ └── WorkflowDefinition.jsx │ │ │ ├── definitions/ │ │ │ │ ├── EventHandler.jsx │ │ │ │ ├── Header.jsx │ │ │ │ ├── Task.jsx │ │ │ │ └── Workflow.jsx │ │ │ ├── errors/ │ │ │ │ ├── ErrorsInspector.jsx │ │ │ │ ├── components/ │ │ │ │ │ ├── FailureReasonChart.jsx │ │ │ │ │ ├── LiveTailButton.jsx │ │ │ │ │ ├── Notification.jsx │ │ │ │ │ ├── StatusChart.jsx │ │ │ │ │ ├── SummaryCard.jsx │ │ │ │ │ ├── TimeRangeDropdown.jsx │ │ │ │ │ ├── TimeSeriesChart.jsx │ │ │ │ │ └── WorkflowTypeChart.jsx │ │ │ │ ├── errorsInspectorStyles.js │ │ │ │ └── hooks/ │ │ │ │ └── useWorkflowErrorGroups.js │ │ │ ├── execution/ │ │ │ │ ├── ActionModule.jsx │ │ │ │ ├── Execution.jsx │ │ │ │ ├── ExecutionInputOutput.jsx │ │ │ │ ├── ExecutionJson.jsx │ │ │ │ ├── ExecutionSummary.jsx │ │ │ │ ├── Legend.jsx │ │ │ │ ├── RightPanel.jsx │ │ │ │ ├── TaskDetails.jsx │ │ │ │ ├── TaskHuman.jsx │ │ │ │ ├── TaskHumanForm.jsx │ │ │ │ ├── TaskList.jsx │ │ │ │ ├── TaskLogs.jsx │ │ │ │ ├── TaskPollData.jsx │ │ │ │ ├── TaskSummary.jsx │ │ │ │ ├── Timeline.jsx │ │ │ │ ├── Timeline.test.cy.js │ │ │ │ └── timeline.scss │ │ │ ├── executions/ │ │ │ │ ├── BulkActionModule.jsx │ │ │ │ ├── ResultsTable.jsx │ │ │ │ ├── SearchTabs.jsx │ │ │ │ ├── TaskResultsTable.jsx │ │ │ │ ├── TaskSearch.jsx │ │ │ │ ├── WorkflowSearch.jsx │ │ │ │ └── executionsStyles.js │ │ │ ├── kitchensink/ │ │ │ │ ├── DataTableDemo.jsx │ │ │ │ ├── DiagramTest.jsx │ │ │ │ ├── Dropdown.jsx │ │ │ │ ├── EnhancedTable.jsx │ │ │ │ ├── Examples.jsx │ │ │ │ ├── Gantt.jsx │ │ │ │ ├── KitchenSink.jsx │ │ │ │ └── sampleMovieData.js │ │ │ ├── misc/ │ │ │ │ └── TaskQueue.jsx │ │ │ ├── styles.js │ │ │ └── workbench/ │ │ │ ├── ExecutionHistory.jsx │ │ │ ├── RunHistory.tsx │ │ │ ├── Workbench.jsx │ │ │ └── WorkbenchForm.jsx │ │ ├── plugins/ │ │ │ ├── AppBarModules.jsx │ │ │ ├── AppLogo.jsx │ │ │ ├── CustomAppBarButtons.jsx │ │ │ ├── CustomRoutes.jsx │ │ │ ├── constants.js │ │ │ ├── customTypeRenderers.jsx │ │ │ ├── env.js │ │ │ └── fetch.js │ │ ├── react-app-env.d.ts │ │ ├── schema/ │ │ │ ├── eventHandler.js │ │ │ ├── task.js │ │ │ └── workflow.js │ │ ├── serviceWorker.js │ │ ├── setupProxy.js │ │ ├── setupTests.js │ │ ├── theme/ │ │ │ ├── colorOverrides.js │ │ │ ├── colors.js │ │ │ ├── index.js │ │ │ ├── provider.jsx │ │ │ ├── theme.js │ │ │ └── variables.js │ │ └── utils/ │ │ ├── constants.js │ │ ├── helperFunctions.js │ │ ├── helpers.js │ │ ├── localstorage.ts │ │ └── path.js │ ├── test-karbon.sh │ └── tsconfig.json ├── ui-next/ │ ├── .gitignore │ ├── .npmrc │ ├── .prettierignore │ ├── .prettierrc.json │ ├── README.md │ ├── eslint.config.mjs │ ├── index.html │ ├── package.json │ ├── public/ │ │ ├── context.js │ │ ├── context.js.example │ │ └── robots.txt │ ├── src/ │ │ ├── commonServices/ │ │ │ ├── execution.ts │ │ │ └── index.ts │ │ ├── components/ │ │ │ ├── ActionButton.tsx │ │ │ ├── App.tsx │ │ │ ├── AutoCompleteWithDescription.tsx │ │ │ ├── AutoRefreshButton.tsx │ │ │ ├── Banner.jsx │ │ │ ├── ButtonGroup.jsx │ │ │ ├── ButtonTooltip.tsx │ │ │ ├── CenteredSpinner.tsx │ │ │ ├── ClipboardCopy.tsx │ │ │ ├── CodeBlockInput.tsx │ │ │ ├── ConfirmChoiceDialog.tsx │ │ │ ├── CustomButton.tsx │ │ │ ├── DataTable/ │ │ │ │ ├── ColumnSelector.tsx │ │ │ │ ├── DataTable.tsx │ │ │ │ ├── Filter.tsx │ │ │ │ ├── QuickSearch.tsx │ │ │ │ ├── TableRefreshButton.tsx │ │ │ │ ├── TagFilter.tsx │ │ │ │ ├── helpers.test.ts │ │ │ │ ├── helpers.ts │ │ │ │ ├── index.ts │ │ │ │ ├── state/ │ │ │ │ │ ├── actions.ts │ │ │ │ │ ├── guards.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── machine.ts │ │ │ │ │ ├── services.ts │ │ │ │ │ └── types.ts │ │ │ │ ├── styles.ts │ │ │ │ └── types.ts │ │ │ ├── DateRangePicker.tsx │ │ │ ├── DiffEditor/ │ │ │ │ ├── DiffEditor.tsx │ │ │ │ └── diff-editor.css │ │ │ ├── DocLink.tsx │ │ │ ├── Dropdown.tsx │ │ │ ├── DropdownButton.tsx │ │ │ ├── EditInPlace.tsx │ │ │ ├── EmptyPageIntro.tsx │ │ │ ├── ErrorBoundary.tsx │ │ │ ├── FeatureDisabledComponent.tsx │ │ │ ├── FeatureDisabledWrapper.tsx │ │ │ ├── FloatingMuiAlert.tsx │ │ │ ├── GetStartedSample/ │ │ │ │ ├── GetStartedSample.tsx │ │ │ │ ├── components/ │ │ │ │ │ └── CodeSnippet.tsx │ │ │ │ └── types.ts │ │ │ ├── Header.tsx │ │ │ ├── Heading.jsx │ │ │ ├── HelperText.jsx │ │ │ ├── InlineEdit.tsx │ │ │ ├── Input.tsx │ │ │ ├── InputNumber.tsx │ │ │ ├── IntegrationIcon.tsx │ │ │ ├── IntegrationsIcon.tsx │ │ │ ├── KeyValueTable.jsx │ │ │ ├── LinearProgress.tsx │ │ │ ├── MetricsChart.tsx │ │ │ ├── MuiAlert.tsx │ │ │ ├── MuiButton.tsx │ │ │ ├── MuiButtonGroup.tsx │ │ │ ├── MuiCheckbox.tsx │ │ │ ├── MuiIconButton.tsx │ │ │ ├── MuiTypography.tsx │ │ │ ├── NavLink.jsx │ │ │ ├── NavLink.tsx │ │ │ ├── NoDataComponent.tsx │ │ │ ├── PanelAccordion.tsx │ │ │ ├── Paper.tsx │ │ │ ├── PromptVariables.tsx │ │ │ ├── Puller.tsx │ │ │ ├── RadioButtonGroup.tsx │ │ │ ├── ReactJson.tsx │ │ │ ├── RoleTagChip.tsx │ │ │ ├── SafariWarning.tsx │ │ │ ├── SearchEverything.tsx │ │ │ ├── Select.tsx │ │ │ ├── Sidebar/ │ │ │ │ ├── BaseSubMenu.tsx │ │ │ │ ├── ClosedLogo.tsx │ │ │ │ ├── HotKeysButton.tsx │ │ │ │ ├── OpenedLogo.tsx │ │ │ │ ├── RunWorkflowButton.tsx │ │ │ │ ├── Sidebar.tsx │ │ │ │ ├── SidebarFooter.tsx │ │ │ │ ├── SidebarHeader.tsx │ │ │ │ ├── SidebarItem.tsx │ │ │ │ ├── SidebarMenu.tsx │ │ │ │ ├── SidebarToggleButton.tsx │ │ │ │ ├── SidebarVersionBlock.tsx │ │ │ │ ├── SubMenu.tsx │ │ │ │ ├── UiSidebar.tsx │ │ │ │ ├── UserInfo.tsx │ │ │ │ ├── constants.ts │ │ │ │ ├── context/ │ │ │ │ │ ├── SidebarContext.tsx │ │ │ │ │ └── SidebarContextProvider.tsx │ │ │ │ ├── createSidebar.ts │ │ │ │ ├── hooks/ │ │ │ │ │ ├── usePendingTasksCount.ts │ │ │ │ │ └── useSidebarHover.ts │ │ │ │ ├── index.ts │ │ │ │ ├── sidebarCoreItems.tsx │ │ │ │ ├── styles.ts │ │ │ │ └── types.ts │ │ │ ├── SnackbarMessage.tsx │ │ │ ├── SplitButton.jsx │ │ │ ├── StackTrace.tsx │ │ │ ├── StatusBadge.tsx │ │ │ ├── StatusTagChip.tsx │ │ │ ├── StrikedText.tsx │ │ │ ├── StringArrayFormField.tsx │ │ │ ├── SubjectSelector/ │ │ │ │ ├── SubjectMultiPicker.tsx │ │ │ │ ├── SubjectSelector.tsx │ │ │ │ ├── helpers.ts │ │ │ │ ├── index.ts │ │ │ │ └── types.ts │ │ │ ├── SubmitFormWrapper.jsx │ │ │ ├── Tabs.jsx │ │ │ ├── TagChip.tsx │ │ │ ├── Text.jsx │ │ │ ├── TwoPanesDivider.jsx │ │ │ ├── UIModal.tsx │ │ │ ├── WorkflowStatusBadge.tsx │ │ │ ├── agent/ │ │ │ │ ├── Agent.tsx │ │ │ │ ├── AgentContext.tsx │ │ │ │ ├── AgentEditorController.tsx │ │ │ │ ├── agent-types.ts │ │ │ │ └── helpers.ts │ │ │ ├── auth/ │ │ │ │ └── AuthGuard.tsx │ │ │ ├── charts/ │ │ │ │ ├── CacheChart.tsx │ │ │ │ ├── ErrorsChart.tsx │ │ │ │ ├── LatencyChart.tsx │ │ │ │ ├── RequestsChart.tsx │ │ │ │ ├── chartUtils.ts │ │ │ │ └── index.ts │ │ │ ├── coPilot/ │ │ │ │ └── CoPilot.tsx │ │ │ ├── conductorTooltip/ │ │ │ │ └── ConductorTooltip.tsx │ │ │ ├── definitionList/ │ │ │ │ └── DefinitionList.jsx │ │ │ ├── diagram/ │ │ │ │ └── diagram.scss │ │ │ ├── flow/ │ │ │ │ ├── Flow.tsx │ │ │ │ ├── FlowFullscreen.scss │ │ │ │ ├── ReaflowOverrides.scss │ │ │ │ ├── components/ │ │ │ │ │ ├── RichAddTaskMenu/ │ │ │ │ │ │ ├── AddTaskSidebar.tsx │ │ │ │ │ │ ├── IntegrationDrillDownContent.tsx │ │ │ │ │ │ ├── QuickAddMenu.tsx │ │ │ │ │ │ ├── helpers.ts │ │ │ │ │ │ ├── iconsForTaskTypes.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── state/ │ │ │ │ │ │ │ ├── actions.ts │ │ │ │ │ │ │ ├── guards.ts │ │ │ │ │ │ │ ├── hook.ts │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ ├── machine.ts │ │ │ │ │ │ │ ├── services.ts │ │ │ │ │ │ │ └── types.ts │ │ │ │ │ │ ├── supportedTasks.ts │ │ │ │ │ │ └── taskGenerator.ts │ │ │ │ │ ├── graphs/ │ │ │ │ │ │ ├── CustomEdgeButton.tsx │ │ │ │ │ │ ├── CustomLabel.tsx │ │ │ │ │ │ ├── CustomNode.jsx │ │ │ │ │ │ ├── CustomPort.jsx │ │ │ │ │ │ ├── PanAndZoomWrapper/ │ │ │ │ │ │ │ ├── PanAndZoomProvider.tsx │ │ │ │ │ │ │ ├── PanAndZoomWrapper.tsx │ │ │ │ │ │ │ ├── SearchBox.tsx │ │ │ │ │ │ │ ├── ZoomControls.tsx │ │ │ │ │ │ │ ├── constants.ts │ │ │ │ │ │ │ ├── icons/ │ │ │ │ │ │ │ │ ├── DragNDrop.tsx │ │ │ │ │ │ │ │ ├── Home.tsx │ │ │ │ │ │ │ │ ├── Minus.tsx │ │ │ │ │ │ │ │ ├── Plus.tsx │ │ │ │ │ │ │ │ └── Search.tsx │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ └── state/ │ │ │ │ │ │ │ ├── actions.ts │ │ │ │ │ │ │ ├── context.tsx │ │ │ │ │ │ │ ├── helpers.test.ts │ │ │ │ │ │ │ ├── helpers.ts │ │ │ │ │ │ │ ├── hook.ts │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ ├── machine.ts │ │ │ │ │ │ │ └── types.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ └── shapes/ │ │ │ │ │ ├── DecisionOperator.tsx │ │ │ │ │ ├── DoWhileTask.jsx │ │ │ │ │ ├── DynamicTasksCards.jsx │ │ │ │ │ ├── StarShape.jsx │ │ │ │ │ ├── SubWorkflowTask.jsx │ │ │ │ │ ├── SwitchJoinPseudoTask.jsx │ │ │ │ │ ├── TaskCard/ │ │ │ │ │ │ ├── AddPathButton.tsx │ │ │ │ │ │ ├── CardAttemptsBadge.jsx │ │ │ │ │ │ ├── CardIcon.jsx │ │ │ │ │ │ ├── CardLabel.jsx │ │ │ │ │ │ ├── CardStatusBadge.jsx │ │ │ │ │ │ ├── DeleteButton.tsx │ │ │ │ │ │ ├── DynamicTask.tsx │ │ │ │ │ │ ├── EventTask.jsx │ │ │ │ │ │ ├── ForkJoinDynamicTask.jsx │ │ │ │ │ │ ├── HTTPPollTask.jsx │ │ │ │ │ │ ├── HTTPTask.jsx │ │ │ │ │ │ ├── INLINETask.jsx │ │ │ │ │ │ ├── JDBCTask.tsx │ │ │ │ │ │ ├── JSONJQTransformTask.jsx │ │ │ │ │ │ ├── KAFKATask.jsx │ │ │ │ │ │ ├── SimpleTask.jsx │ │ │ │ │ │ ├── StartWorkflowTask.jsx │ │ │ │ │ │ ├── SwitchAdd.tsx │ │ │ │ │ │ ├── TaskCard.tsx │ │ │ │ │ │ ├── WaitTaskInfo.tsx │ │ │ │ │ │ ├── helpers.test.ts │ │ │ │ │ │ ├── helpers.ts │ │ │ │ │ │ └── icons/ │ │ │ │ │ │ ├── Buildings.jsx │ │ │ │ │ │ ├── BusinessRule.tsx │ │ │ │ │ │ ├── CheckIcon.jsx │ │ │ │ │ │ ├── DeleteIcon.jsx │ │ │ │ │ │ ├── DynamicFanout.tsx │ │ │ │ │ │ ├── DynamicFork.tsx │ │ │ │ │ │ ├── Event.tsx │ │ │ │ │ │ ├── ExclamationCircleIcon.jsx │ │ │ │ │ │ ├── ForkIcon.tsx │ │ │ │ │ │ ├── ForkJoinIcon.tsx │ │ │ │ │ │ ├── GetDocument.tsx │ │ │ │ │ │ ├── GetWorkflow.tsx │ │ │ │ │ │ ├── Http.tsx │ │ │ │ │ │ ├── HttpPoll.tsx │ │ │ │ │ │ ├── Inline.tsx │ │ │ │ │ │ ├── Json.tsx │ │ │ │ │ │ ├── Kafka.jsx │ │ │ │ │ │ ├── LlmChatComplete.tsx │ │ │ │ │ │ ├── LlmGenerateEmbeddings.tsx │ │ │ │ │ │ ├── LlmGetEmbeddings.tsx │ │ │ │ │ │ ├── LlmIndexDocument.tsx │ │ │ │ │ │ ├── LlmIndexText.tsx │ │ │ │ │ │ ├── LlmSearchIndex.tsx │ │ │ │ │ │ ├── LlmStoreEmbeddings.jsx │ │ │ │ │ │ ├── LlmTextComplete.tsx │ │ │ │ │ │ ├── LoopIcon.tsx │ │ │ │ │ │ ├── MCPIcon.tsx │ │ │ │ │ │ ├── MergeIcon.tsx │ │ │ │ │ │ ├── MinusIcon.jsx │ │ │ │ │ │ ├── OpsGenie.tsx │ │ │ │ │ │ ├── PlusIcon.jsx │ │ │ │ │ │ ├── QueryProcessor.tsx │ │ │ │ │ │ ├── Sendgrid.tsx │ │ │ │ │ │ ├── Simple.tsx │ │ │ │ │ │ ├── StackIcon.jsx │ │ │ │ │ │ ├── SubWorkflow.tsx │ │ │ │ │ │ ├── Switch.tsx │ │ │ │ │ │ ├── Terminate.tsx │ │ │ │ │ │ ├── TerminateWorkFlow.tsx │ │ │ │ │ │ ├── UpdateSecret.tsx │ │ │ │ │ │ ├── UpdateTaskIcon.tsx │ │ │ │ │ │ ├── Variable.tsx │ │ │ │ │ │ ├── Wait.tsx │ │ │ │ │ │ ├── WaitForWebhook.tsx │ │ │ │ │ │ ├── WarningIcon.jsx │ │ │ │ │ │ ├── WorkFlow.tsx │ │ │ │ │ │ ├── Worker.tsx │ │ │ │ │ │ └── types.ts │ │ │ │ │ ├── TaskDescription.tsx │ │ │ │ │ ├── TaskShape/ │ │ │ │ │ │ ├── Shape.tsx │ │ │ │ │ │ ├── TaskShape.tsx │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── TaskSummary.jsx │ │ │ │ │ ├── TerminalTask.jsx │ │ │ │ │ ├── styles.ts │ │ │ │ │ └── testDiagrams.js │ │ │ │ ├── dragDrop/ │ │ │ │ │ ├── DraggableOverlay.tsx │ │ │ │ │ ├── Handle.tsx │ │ │ │ │ ├── boxCollision.ts │ │ │ │ │ ├── hooks.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── nodes/ │ │ │ │ │ ├── constants.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── layoutTestData.js │ │ │ │ │ └── mapper/ │ │ │ │ │ ├── common.test.ts │ │ │ │ │ ├── common.ts │ │ │ │ │ ├── constants.ts │ │ │ │ │ ├── core.test.js │ │ │ │ │ ├── core.ts │ │ │ │ │ ├── crumbs.test.ts │ │ │ │ │ ├── crumbs.ts │ │ │ │ │ ├── doWhile.ts │ │ │ │ │ ├── edgeMapper.test.js │ │ │ │ │ ├── edgeMapper.ts │ │ │ │ │ ├── forkJoin.test.js │ │ │ │ │ ├── forkJoin.ts │ │ │ │ │ ├── forkJoinDynamic.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── join.test.js │ │ │ │ │ ├── join.ts │ │ │ │ │ ├── layout.js │ │ │ │ │ ├── ports.ts │ │ │ │ │ ├── predicates.ts │ │ │ │ │ ├── subWorkflow.test.js │ │ │ │ │ ├── subWorkflow.ts │ │ │ │ │ ├── switch.test.js │ │ │ │ │ ├── switch.ts │ │ │ │ │ ├── terminal.ts │ │ │ │ │ ├── terminate.ts │ │ │ │ │ └── types.ts │ │ │ │ ├── state/ │ │ │ │ │ ├── FlowActorContext.tsx │ │ │ │ │ ├── action.ts │ │ │ │ │ ├── context.tsx │ │ │ │ │ ├── guards.ts │ │ │ │ │ ├── helpers.js │ │ │ │ │ ├── hook.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── machine.ts │ │ │ │ │ ├── selectors.ts │ │ │ │ │ ├── service.ts │ │ │ │ │ └── types.ts │ │ │ │ ├── testUtils.js │ │ │ │ └── theme.ts │ │ │ ├── index.ts │ │ │ ├── reactHookForm/ │ │ │ │ ├── ReactHookFormDropdown.tsx │ │ │ │ └── ReactHookFormInput.tsx │ │ │ ├── searchWrapper/ │ │ │ │ ├── SearchWrapper.tsx │ │ │ │ └── state/ │ │ │ │ ├── actions.ts │ │ │ │ ├── helpers.test.ts │ │ │ │ ├── helpers.ts │ │ │ │ ├── hook.ts │ │ │ │ ├── index.ts │ │ │ │ ├── machine.ts │ │ │ │ ├── services.ts │ │ │ │ └── types.ts │ │ │ ├── tags/ │ │ │ │ ├── AddTagDialog.tsx │ │ │ │ └── ReplaceTagsInput.tsx │ │ │ └── v1/ │ │ │ ├── ActionAlert.tsx │ │ │ ├── AdvancedSearchFieldPopper.tsx │ │ │ ├── ApiSearchModal/ │ │ │ │ ├── ApiSearchModal.tsx │ │ │ │ └── index.ts │ │ │ ├── ArrowBox.tsx │ │ │ ├── CodeBlockInputWrapper.tsx │ │ │ ├── CodeSnippet.tsx │ │ │ ├── ConductorArrayField.tsx │ │ │ ├── ConductorAutoComplete.tsx │ │ │ ├── ConductorAutoCompleteWithDescription.tsx │ │ │ ├── ConductorBreadcrumbs.tsx │ │ │ ├── ConductorCheckbox.tsx │ │ │ ├── ConductorCodeBlockInput.tsx │ │ │ ├── ConductorEmptyGroupField.tsx │ │ │ ├── ConductorGroupContainer.tsx │ │ │ ├── ConductorGroupFieldTitle.tsx │ │ │ ├── ConductorInput.tsx │ │ │ ├── ConductorInputNumber.tsx │ │ │ ├── ConductorMultiSelect.tsx │ │ │ ├── ConductorNameVersionField.tsx │ │ │ ├── ConductorSelect.tsx │ │ │ ├── ConductorSlider/ │ │ │ │ ├── ConductorSlider.tsx │ │ │ │ └── ConductorSliderStateless.tsx │ │ │ ├── ConductorSplitButton.tsx │ │ │ ├── ConductorStringArrayFormField.tsx │ │ │ ├── ConductorTabs.tsx │ │ │ ├── ConductorUpdateTaskFromEvent.tsx │ │ │ ├── CopyClipboardButton.tsx │ │ │ ├── EventExpressionHelp.tsx │ │ │ ├── FileUploadButton.tsx │ │ │ ├── FlatMapForm/ │ │ │ │ ├── ConductorAutocompleteArrayField.tsx │ │ │ │ ├── ConductorAutocompleteVariables.tsx │ │ │ │ ├── ConductorFieldTypeDropdown.tsx │ │ │ │ ├── ConductorFlatMapForm.tsx │ │ │ │ ├── ConductorKeyValueInput.tsx │ │ │ │ ├── ConductorStringOrJsonInput.tsx │ │ │ │ ├── customFilter.test.ts │ │ │ │ └── formOptions.ts │ │ │ ├── HeadTabs.tsx │ │ │ ├── Modal/ │ │ │ │ ├── ConfirmModal.tsx │ │ │ │ ├── UnsavedChangesDialog.tsx │ │ │ │ ├── commonStyles.ts │ │ │ │ └── useDialogHelper.tsx │ │ │ ├── MultiOptionSelect.tsx │ │ │ ├── RoundedInput.tsx │ │ │ ├── SpinningIcon.tsx │ │ │ ├── SwaggerTestComponent.tsx │ │ │ ├── TagList.tsx │ │ │ ├── TestTask/ │ │ │ │ ├── TestTask.tsx │ │ │ │ └── index.ts │ │ │ ├── TooltipModal.tsx │ │ │ ├── TooltipStateless.tsx │ │ │ ├── UnderlinedText.tsx │ │ │ ├── date-time/ │ │ │ │ ├── ConductorDateRangePicker.tsx │ │ │ │ ├── ConductorDateTimePicker.tsx │ │ │ │ ├── ConductorSingleDateRangePicker.tsx │ │ │ │ ├── ConductorTimePicker.tsx │ │ │ │ └── CustomDateRangePicker.scss │ │ │ ├── error/ │ │ │ │ └── Error.tsx │ │ │ ├── icons/ │ │ │ │ ├── AddIcon.tsx │ │ │ │ ├── AnnouncementIcon.tsx │ │ │ │ ├── ArrowDownIcon.tsx │ │ │ │ ├── ArrowUpIcon.tsx │ │ │ │ ├── ChatIcon.tsx │ │ │ │ ├── CircleCheckIcon.tsx │ │ │ │ ├── CopyIcon.tsx │ │ │ │ ├── DatetimeIcon.tsx │ │ │ │ ├── DocsIcon.tsx │ │ │ │ ├── DoubleArrowLeftIcon.tsx │ │ │ │ ├── DoubleArrowRightIcon.tsx │ │ │ │ ├── DownloadIcon.tsx │ │ │ │ ├── DropdownIcon.tsx │ │ │ │ ├── EnterIcon.tsx │ │ │ │ ├── ExitIcon.tsx │ │ │ │ ├── ExpandIcon.tsx │ │ │ │ ├── FilterIcon.tsx │ │ │ │ ├── InfoIcon.tsx │ │ │ │ ├── NewIntegration.tsx │ │ │ │ ├── OpenIcon.tsx │ │ │ │ ├── PlayIcon.tsx │ │ │ │ ├── PythonIcon.tsx │ │ │ │ ├── RefreshIcon.tsx │ │ │ │ ├── RequestACallIcon.tsx │ │ │ │ ├── ResetIcon.tsx │ │ │ │ ├── RunIcon.tsx │ │ │ │ ├── Save.tsx │ │ │ │ ├── SaveIcon.tsx │ │ │ │ ├── SearchIcon.tsx │ │ │ │ ├── ShowViewIcon.tsx │ │ │ │ ├── TestIcon.tsx │ │ │ │ ├── TimeIcon.tsx │ │ │ │ ├── TrashIcon.tsx │ │ │ │ ├── UnlockIcon.tsx │ │ │ │ └── XCloseIcon.tsx │ │ │ ├── index.ts │ │ │ ├── layout/ │ │ │ │ ├── MessageContext/ │ │ │ │ │ ├── MessageContext.tsx │ │ │ │ │ ├── MessageProvider.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── header/ │ │ │ │ │ ├── AnnouncementBanner.tsx │ │ │ │ │ ├── ButtonLinks.tsx │ │ │ │ │ └── bannerUtils.ts │ │ │ │ └── section/ │ │ │ │ └── ConductorSectionHeader.tsx │ │ │ ├── quiz/ │ │ │ │ └── OnboardingQuiz.tsx │ │ │ ├── react-hook-form/ │ │ │ │ ├── ReactHookFormCheckbox.test.tsx │ │ │ │ ├── ReactHookFormCheckbox.tsx │ │ │ │ ├── ReactHookFormDropdown.test.tsx │ │ │ │ ├── ReactHookFormDropdown.tsx │ │ │ │ ├── ReactHookFormEditor.tsx │ │ │ │ ├── ReactHookFormFlatMapForm.tsx │ │ │ │ ├── ReactHookFormIdempotencyForm.test.tsx │ │ │ │ ├── ReactHookFormIdempotencyForm.tsx │ │ │ │ ├── ReactHookFormInput.test.tsx │ │ │ │ ├── ReactHookFormInput.tsx │ │ │ │ ├── ReactHookFormNameVersionField.test.tsx │ │ │ │ └── ReactHookFormNameVersionField.tsx │ │ │ └── theme/ │ │ │ ├── index.ts │ │ │ ├── material/ │ │ │ │ ├── components/ │ │ │ │ │ ├── buttons.ts │ │ │ │ │ ├── buttonsGroup.ts │ │ │ │ │ └── formControls.ts │ │ │ │ ├── context.tsx │ │ │ │ └── provider.tsx │ │ │ ├── styles.ts │ │ │ └── theme.ts │ │ ├── growthbook/ │ │ │ ├── MaybeGrowthbookProvider.tsx │ │ │ ├── growthbookInstance.ts │ │ │ ├── plugins.ts │ │ │ └── useMaybeIdentifyGrowthbook.tsx │ │ ├── index.css │ │ ├── index.ts │ │ ├── main.tsx │ │ ├── pages/ │ │ │ ├── apiDocs/ │ │ │ │ └── ApiReferencePage.tsx │ │ │ ├── creatorFlags/ │ │ │ │ └── CreatorFlags.tsx │ │ │ ├── definition/ │ │ │ │ ├── ConfirmDialog.tsx │ │ │ │ ├── ConfirmLocalCopyDialog/ │ │ │ │ │ ├── ConfirmLocalCopyDialog.tsx │ │ │ │ │ └── state/ │ │ │ │ │ ├── actions.ts │ │ │ │ │ ├── hook.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── machine.ts │ │ │ │ │ ├── service.ts │ │ │ │ │ └── types.ts │ │ │ │ ├── EditorPanel/ │ │ │ │ │ ├── AssistantPanel.tsx │ │ │ │ │ ├── AssistantPanelHeader.tsx │ │ │ │ │ ├── CodeEditorTab/ │ │ │ │ │ │ ├── CodeTab.tsx │ │ │ │ │ │ ├── MonacoDefinitionOverrides.scss │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── state/ │ │ │ │ │ │ ├── actions.ts │ │ │ │ │ │ ├── hook.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── machine.ts │ │ │ │ │ │ └── types.ts │ │ │ │ │ ├── ConfirmationDialogs.tsx │ │ │ │ │ ├── CustomTooltip.tsx │ │ │ │ │ ├── DependenciesTab/ │ │ │ │ │ │ └── DependenciesTab.tsx │ │ │ │ │ ├── EditorPanel.tsx │ │ │ │ │ ├── EditorTabs.tsx │ │ │ │ │ ├── HeadActionButtons.tsx │ │ │ │ │ ├── RunWorkflowButton.tsx │ │ │ │ │ ├── TabContent.tsx │ │ │ │ │ ├── TaskFormTab/ │ │ │ │ │ │ ├── TaskForm.tsx │ │ │ │ │ │ ├── TaskFormContent.tsx │ │ │ │ │ │ ├── TaskStats/ │ │ │ │ │ │ │ ├── CountBar.tsx │ │ │ │ │ │ │ ├── RangeButtons.tsx │ │ │ │ │ │ │ ├── TaskRateChart.tsx │ │ │ │ │ │ │ ├── TaskStats.tsx │ │ │ │ │ │ │ └── state/ │ │ │ │ │ │ │ ├── actions.ts │ │ │ │ │ │ │ ├── guards.ts │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ ├── machine.ts │ │ │ │ │ │ │ ├── services.ts │ │ │ │ │ │ │ └── types.ts │ │ │ │ │ │ ├── forms/ │ │ │ │ │ │ │ ├── ArrayForm.tsx │ │ │ │ │ │ │ ├── BusinessRuleForm.tsx │ │ │ │ │ │ │ ├── ChunkTextTaskForm.tsx │ │ │ │ │ │ │ ├── ConductorCacheOutputForm.tsx │ │ │ │ │ │ │ ├── ConductorFlexibleAutoCompleteVariables.tsx │ │ │ │ │ │ │ ├── ConductorObjectOrStringInput.tsx │ │ │ │ │ │ │ ├── ConductorValueInput.tsx │ │ │ │ │ │ │ ├── DoWhileTaskForm/ │ │ │ │ │ │ │ │ ├── DoWhileCodeBlock.tsx │ │ │ │ │ │ │ │ ├── DoWhileForm.tsx │ │ │ │ │ │ │ │ ├── common.ts │ │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ │ └── sampleScripts.ts │ │ │ │ │ │ │ ├── DynamicForkOperatorForm.tsx │ │ │ │ │ │ │ ├── DynamicOperatorForm.tsx │ │ │ │ │ │ │ ├── EnforceSchemaForm.tsx │ │ │ │ │ │ │ ├── EventTaskForm/ │ │ │ │ │ │ │ │ ├── EventTaskForm.tsx │ │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ │ ├── FieldTypeDropdown.tsx │ │ │ │ │ │ │ ├── FlexibleAutoCompleteVariables.tsx │ │ │ │ │ │ │ ├── GRPCTaskForm/ │ │ │ │ │ │ │ │ ├── GRPCTaskForm.tsx │ │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ │ └── types.ts │ │ │ │ │ │ │ ├── GetDocumentTaskForm.tsx │ │ │ │ │ │ │ ├── GetSignedJwtForm.tsx │ │ │ │ │ │ │ ├── GetWorkflowTaskForm/ │ │ │ │ │ │ │ │ ├── GetWorkflowTaskForm.tsx │ │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ │ ├── HTTPTaskForm/ │ │ │ │ │ │ │ │ ├── ConductorAdditionalHeaders.tsx │ │ │ │ │ │ │ │ ├── EditTaskDefConfigModal.tsx │ │ │ │ │ │ │ │ ├── Encode.tsx │ │ │ │ │ │ │ │ ├── HTTPPollTaskForm.tsx │ │ │ │ │ │ │ │ ├── HTTPTaskForm.tsx │ │ │ │ │ │ │ │ ├── common.ts │ │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ │ ├── state/ │ │ │ │ │ │ │ │ │ ├── actions.ts │ │ │ │ │ │ │ │ │ ├── helper.ts │ │ │ │ │ │ │ │ │ ├── hook.ts │ │ │ │ │ │ │ │ │ ├── machine.ts │ │ │ │ │ │ │ │ │ ├── services.ts │ │ │ │ │ │ │ │ │ └── types.ts │ │ │ │ │ │ │ │ └── types.ts │ │ │ │ │ │ │ ├── HedgingConfigForm.tsx │ │ │ │ │ │ │ ├── INLINETaskForm/ │ │ │ │ │ │ │ │ ├── INLINETaskForm.tsx │ │ │ │ │ │ │ │ ├── InlineCodeBlock.tsx │ │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ │ ├── JDBCTaskForm.tsx │ │ │ │ │ │ │ ├── JOINTaskForm/ │ │ │ │ │ │ │ │ ├── JOINTaskForm.tsx │ │ │ │ │ │ │ │ ├── JoinCodeBlock.tsx │ │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ │ ├── JSONField.tsx │ │ │ │ │ │ │ ├── JSONJQTransformForm.tsx │ │ │ │ │ │ │ ├── KafkaTaskForm.tsx │ │ │ │ │ │ │ ├── LLMChainTaskForm.tsx │ │ │ │ │ │ │ ├── LLMChatCompleteTaskForm.tsx │ │ │ │ │ │ │ ├── LLMFormFields/ │ │ │ │ │ │ │ │ ├── ConductorArrayMapForm.tsx │ │ │ │ │ │ │ │ ├── LLMFormFields.tsx │ │ │ │ │ │ │ │ ├── LLMFormFieldsWrapper.tsx │ │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ │ └── state/ │ │ │ │ │ │ │ │ ├── actions.ts │ │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ │ ├── machine.ts │ │ │ │ │ │ │ │ ├── services.ts │ │ │ │ │ │ │ │ └── types.ts │ │ │ │ │ │ │ ├── LLMGenerateEmbeddingsTaskForm.tsx │ │ │ │ │ │ │ ├── LLMGetEmbeddingsTaskForm.tsx │ │ │ │ │ │ │ ├── LLMIndexDocumentTaskForm.tsx │ │ │ │ │ │ │ ├── LLMIndexTextTaskForm.tsx │ │ │ │ │ │ │ ├── LLMSearchIndexTaskForm.tsx │ │ │ │ │ │ │ ├── LLMStoreEmbeddingsTaskForm.tsx │ │ │ │ │ │ │ ├── LLMTextCompleteTaskForm.tsx │ │ │ │ │ │ │ ├── ListFilesTaskForm.tsx │ │ │ │ │ │ │ ├── MCPTaskForm.tsx │ │ │ │ │ │ │ ├── MaybeVariable.tsx │ │ │ │ │ │ │ ├── OpsGenieTaskForm.tsx │ │ │ │ │ │ │ ├── OptionalFieldForm.tsx │ │ │ │ │ │ │ ├── ParseDocumentTaskForm.tsx │ │ │ │ │ │ │ ├── QueryProcessorTaskForm/ │ │ │ │ │ │ │ │ ├── MetricsTypeForm.tsx │ │ │ │ │ │ │ │ ├── QueryProcessorTaskForm.tsx │ │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ │ ├── RateLimitConfigForm.tsx │ │ │ │ │ │ │ ├── SchemaForm.tsx │ │ │ │ │ │ │ ├── SendgridForm.tsx │ │ │ │ │ │ │ ├── ServiceRegistrySelector.tsx │ │ │ │ │ │ │ ├── SetVariableOperatorForm.tsx │ │ │ │ │ │ │ ├── SimpleTaskForm/ │ │ │ │ │ │ │ │ ├── SampleCode.ts │ │ │ │ │ │ │ │ ├── SimpleTaskForm.tsx │ │ │ │ │ │ │ │ ├── TemplateKeys.tsx │ │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ │ ├── SimpleTaskNameInput.tsx │ │ │ │ │ │ │ ├── StartWorkflowTaskForm/ │ │ │ │ │ │ │ │ ├── StartWorkflowTaskForm.tsx │ │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ │ └── state/ │ │ │ │ │ │ │ │ ├── actions.ts │ │ │ │ │ │ │ │ ├── hook.ts │ │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ │ ├── machine.test.ts │ │ │ │ │ │ │ │ ├── machine.ts │ │ │ │ │ │ │ │ ├── service.ts │ │ │ │ │ │ │ │ └── types.ts │ │ │ │ │ │ │ ├── SubWorkflowOperatorForm/ │ │ │ │ │ │ │ │ ├── SubWorkflowOperatorForm.tsx │ │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ │ └── types.ts │ │ │ │ │ │ │ ├── SwitchTaskForm/ │ │ │ │ │ │ │ │ ├── SwitchCodeBlock.tsx │ │ │ │ │ │ │ │ ├── SwitchOperatorForm.tsx │ │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ │ ├── TaskFormFooter.tsx │ │ │ │ │ │ │ ├── TaskFormHeader/ │ │ │ │ │ │ │ │ ├── TaskFormHeader.tsx │ │ │ │ │ │ │ │ ├── TaskFormHeaderSimple.tsx │ │ │ │ │ │ │ │ ├── TaskFormHeaderTasks.tsx │ │ │ │ │ │ │ │ └── state/ │ │ │ │ │ │ │ │ ├── actions.ts │ │ │ │ │ │ │ │ ├── hook.ts │ │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ │ ├── machine.ts │ │ │ │ │ │ │ │ └── types.ts │ │ │ │ │ │ │ ├── TaskFormSection.tsx │ │ │ │ │ │ │ ├── TaskFormStyles.ts │ │ │ │ │ │ │ ├── TerminateOperatorForm.tsx │ │ │ │ │ │ │ ├── TerminateWorkflowForm.tsx │ │ │ │ │ │ │ ├── TestTaskButton/ │ │ │ │ │ │ │ │ ├── OpenTestTaskButton.tsx │ │ │ │ │ │ │ │ ├── TestTaskButton.tsx │ │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ │ └── state/ │ │ │ │ │ │ │ │ ├── actions.ts │ │ │ │ │ │ │ │ ├── hook.ts │ │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ │ ├── machine.ts │ │ │ │ │ │ │ │ ├── service.ts │ │ │ │ │ │ │ │ └── types.ts │ │ │ │ │ │ │ ├── UnknownTaskForm.tsx │ │ │ │ │ │ │ ├── UpdateSecretForm/ │ │ │ │ │ │ │ │ ├── UpdateSecretTaskForm.tsx │ │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ │ ├── UpdateTaskForm/ │ │ │ │ │ │ │ │ ├── UpdateTaskForm.tsx │ │ │ │ │ │ │ │ ├── UpdateTaskFromEvent.tsx │ │ │ │ │ │ │ │ ├── common.ts │ │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ │ ├── WaitForWebhookForm/ │ │ │ │ │ │ │ │ ├── WaitForWebhookTaskForm.tsx │ │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ │ ├── WaitTaskForm/ │ │ │ │ │ │ │ │ ├── DurationWaitTaskForm.tsx │ │ │ │ │ │ │ │ ├── SelectWaitType.tsx │ │ │ │ │ │ │ │ ├── UntilWaitTaskForm.tsx │ │ │ │ │ │ │ │ ├── WaitTaskForm.tsx │ │ │ │ │ │ │ │ ├── helpers.ts │ │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ │ └── types.ts │ │ │ │ │ │ │ ├── YieldTaskForm.tsx │ │ │ │ │ │ │ ├── editorConfig.ts │ │ │ │ │ │ │ ├── hooks/ │ │ │ │ │ │ │ │ ├── useSchemaFormHandler.ts │ │ │ │ │ │ │ │ └── useTaskForm.ts │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ ├── maybeVariableHOC.tsx │ │ │ │ │ │ │ ├── types.ts │ │ │ │ │ │ │ └── useGetSetHandler.ts │ │ │ │ │ │ ├── helpers.test.ts │ │ │ │ │ │ ├── helpers.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── state/ │ │ │ │ │ │ │ ├── TaskFormContext/ │ │ │ │ │ │ │ │ ├── TaskFormContext.tsx │ │ │ │ │ │ │ │ ├── TaskFormProvider.tsx │ │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ │ └── types.ts │ │ │ │ │ │ │ ├── actions.ts │ │ │ │ │ │ │ ├── guards.ts │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ ├── machine.ts │ │ │ │ │ │ │ └── types.ts │ │ │ │ │ │ └── taskDescription.ts │ │ │ │ │ ├── WorkflowPropertiesFormTab/ │ │ │ │ │ │ ├── ActorToHandlerValue.tsx │ │ │ │ │ │ ├── WorkflowPropertiesForm.tsx │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── state/ │ │ │ │ │ │ ├── actions.ts │ │ │ │ │ │ ├── hook.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── machine.ts │ │ │ │ │ │ └── types.ts │ │ │ │ │ ├── hook.ts │ │ │ │ │ └── selectors.ts │ │ │ │ ├── EventHandler/ │ │ │ │ │ ├── EventHandler.tsx │ │ │ │ │ ├── SaveProtectionPrompt.tsx │ │ │ │ │ ├── eventhandlers/ │ │ │ │ │ │ ├── EventHandlerButton.tsx │ │ │ │ │ │ ├── EventHandlerEditor.tsx │ │ │ │ │ │ ├── FormComponent/ │ │ │ │ │ │ │ ├── ActionForms/ │ │ │ │ │ │ │ │ ├── CompleteTask.tsx │ │ │ │ │ │ │ │ ├── FailTask.tsx │ │ │ │ │ │ │ │ ├── StartWorkflowTask.tsx │ │ │ │ │ │ │ │ ├── TerminateWorkflowTask.tsx │ │ │ │ │ │ │ │ ├── UpdateWorkflowTask.tsx │ │ │ │ │ │ │ │ └── common.ts │ │ │ │ │ │ │ ├── EventHandlerForm.tsx │ │ │ │ │ │ │ └── state/ │ │ │ │ │ │ │ ├── actions.ts │ │ │ │ │ │ │ ├── hook.ts │ │ │ │ │ │ │ ├── machine.ts │ │ │ │ │ │ │ └── types.ts │ │ │ │ │ │ ├── eventHandlerSchema.ts │ │ │ │ │ │ └── state/ │ │ │ │ │ │ ├── actions.ts │ │ │ │ │ │ ├── guards.ts │ │ │ │ │ │ ├── hook.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── machine.ts │ │ │ │ │ │ ├── services.ts │ │ │ │ │ │ └── types.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── GraphPanel.jsx │ │ │ │ ├── ImportSuccessfulDialog.tsx │ │ │ │ ├── PromptIfChanges.tsx │ │ │ │ ├── RunWorkflow/ │ │ │ │ │ ├── RunWorkflowForm.tsx │ │ │ │ │ ├── RunWorkflowHistoryTable.tsx │ │ │ │ │ ├── index.ts │ │ │ │ │ └── state/ │ │ │ │ │ ├── actions.ts │ │ │ │ │ ├── hook.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── machine.ts │ │ │ │ │ ├── services.ts │ │ │ │ │ └── types.ts │ │ │ │ ├── WorkflowDefinition.tsx │ │ │ │ ├── WorkflowMetadata/ │ │ │ │ │ ├── EditInPlaceWrapper/ │ │ │ │ │ │ ├── EditInPlaceFieldWrapper.tsx │ │ │ │ │ │ └── state/ │ │ │ │ │ │ ├── actions.ts │ │ │ │ │ │ ├── guards.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── machine.ts │ │ │ │ │ │ └── types.ts │ │ │ │ │ ├── WorkflowMetaBar.tsx │ │ │ │ │ ├── index.ts │ │ │ │ │ └── state/ │ │ │ │ │ ├── WorkflowMetadataContext/ │ │ │ │ │ │ ├── WorkflowMetadataContext.tsx │ │ │ │ │ │ ├── WorkflowMetadataProvider.tsx │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── types.ts │ │ │ │ │ ├── actions.ts │ │ │ │ │ ├── guards.ts │ │ │ │ │ ├── hook.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── machine.ts │ │ │ │ │ ├── services.ts │ │ │ │ │ └── types.ts │ │ │ │ ├── commonService.ts │ │ │ │ ├── confirmSave/ │ │ │ │ │ ├── ConfirmSaveButtonGroup.tsx │ │ │ │ │ ├── ConfirmSaveDiffEditor.tsx │ │ │ │ │ ├── ConfirmWorkflowOverride.tsx │ │ │ │ │ ├── index.ts │ │ │ │ │ └── state/ │ │ │ │ │ ├── actions.ts │ │ │ │ │ ├── guards.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── machine.ts │ │ │ │ │ ├── services.ts │ │ │ │ │ └── types.ts │ │ │ │ ├── errorInspector/ │ │ │ │ │ ├── AccordionErrorSummary.tsx │ │ │ │ │ ├── ErrorInspector.tsx │ │ │ │ │ ├── ImportSummary.tsx │ │ │ │ │ ├── ServerErrorDisplayer.tsx │ │ │ │ │ ├── TaskErrorsDisplayer.tsx │ │ │ │ │ ├── WorkflowErrorDisplayer.tsx │ │ │ │ │ └── state/ │ │ │ │ │ ├── actions.ts │ │ │ │ │ ├── helpers.test.ts │ │ │ │ │ ├── helpers.ts │ │ │ │ │ ├── hook.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── machine.ts │ │ │ │ │ ├── schemaValidator.ts │ │ │ │ │ ├── service.test.ts │ │ │ │ │ ├── service.ts │ │ │ │ │ └── types.ts │ │ │ │ ├── helper.test.ts │ │ │ │ ├── helpers.ts │ │ │ │ ├── progressicons.jsx │ │ │ │ ├── state/ │ │ │ │ │ ├── WorkflowEditContext/ │ │ │ │ │ │ ├── WorkflowEditContext.tsx │ │ │ │ │ │ ├── WorkflowEditProvider.tsx │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── types.ts │ │ │ │ │ ├── action.ts │ │ │ │ │ ├── constants.js │ │ │ │ │ ├── guards.ts │ │ │ │ │ ├── hook.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── machine.ts │ │ │ │ │ ├── services.ts │ │ │ │ │ ├── taskModifier/ │ │ │ │ │ │ ├── constants.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── taskModifier.test.js │ │ │ │ │ │ └── taskModifier.ts │ │ │ │ │ ├── types.ts │ │ │ │ │ ├── useGetVariablesForSelectedTasks.ts │ │ │ │ │ ├── useMadeChanges.ts │ │ │ │ │ ├── usePanelChanges.ts │ │ │ │ │ └── usePerformOperationOnDefintion.ts │ │ │ │ └── task/ │ │ │ │ ├── CreationInfo.tsx │ │ │ │ ├── NameDescription.tsx │ │ │ │ ├── SaveProtectionPrompt.tsx │ │ │ │ ├── TaskDefErrorInspector.tsx │ │ │ │ ├── TaskDefinition.tsx │ │ │ │ ├── TaskDefinitionButtons.tsx │ │ │ │ ├── TaskDefinitionDiffEditor.tsx │ │ │ │ ├── TestTaskForm.tsx │ │ │ │ ├── dialogs/ │ │ │ │ │ ├── TaskDefinitionDialogs.tsx │ │ │ │ │ └── state/ │ │ │ │ │ ├── actions.ts │ │ │ │ │ ├── guards.ts │ │ │ │ │ ├── hook.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── machine.ts │ │ │ │ │ └── types.ts │ │ │ │ ├── form/ │ │ │ │ │ ├── TaskDefinitionForm.tsx │ │ │ │ │ └── state/ │ │ │ │ │ ├── actions.ts │ │ │ │ │ ├── guards.ts │ │ │ │ │ ├── hook.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── machine.ts │ │ │ │ │ ├── services.ts │ │ │ │ │ └── types.ts │ │ │ │ ├── index.ts │ │ │ │ └── state/ │ │ │ │ ├── actions.ts │ │ │ │ ├── guards.ts │ │ │ │ ├── helpers.ts │ │ │ │ ├── hook.ts │ │ │ │ ├── index.ts │ │ │ │ ├── machine.ts │ │ │ │ ├── services.ts │ │ │ │ ├── types.ts │ │ │ │ └── validator.ts │ │ │ ├── definitions/ │ │ │ │ ├── EventHandler.tsx │ │ │ │ ├── Scheduler/ │ │ │ │ │ ├── BulkActionModule.tsx │ │ │ │ │ └── Schedules.tsx │ │ │ │ ├── Task.tsx │ │ │ │ ├── Workflow.tsx │ │ │ │ ├── dialog/ │ │ │ │ │ ├── CloneDialog.tsx │ │ │ │ │ ├── CloneScheduleDialog.tsx │ │ │ │ │ ├── CloneWorkflowDialog.tsx │ │ │ │ │ └── ShareWorkflowDialog.tsx │ │ │ │ ├── index.ts │ │ │ │ └── rowColorHelpers.ts │ │ │ ├── error/ │ │ │ │ ├── ErrorPage.tsx │ │ │ │ ├── Forbidden.tsx │ │ │ │ ├── UserNotFound.tsx │ │ │ │ └── types.ts │ │ │ ├── eventMonitor/ │ │ │ │ ├── EventMonitor.tsx │ │ │ │ ├── EventMonitorDetail/ │ │ │ │ │ ├── EventMonitorDetail.tsx │ │ │ │ │ ├── ExpandedGroupedItem.tsx │ │ │ │ │ ├── PayloadModal.tsx │ │ │ │ │ └── Refresher/ │ │ │ │ │ ├── RefreshEvent.tsx │ │ │ │ │ └── state/ │ │ │ │ │ ├── actions.ts │ │ │ │ │ ├── hook.ts │ │ │ │ │ ├── machine.ts │ │ │ │ │ ├── services.ts │ │ │ │ │ └── types.ts │ │ │ │ ├── types.ts │ │ │ │ └── utils.ts │ │ │ ├── execution/ │ │ │ │ ├── ActionModule.jsx │ │ │ │ ├── Execution.jsx │ │ │ │ ├── ExecutionInputOutput.tsx │ │ │ │ ├── ExecutionJson.jsx │ │ │ │ ├── ExecutionSummary.jsx │ │ │ │ ├── LeftPanelTabs.tsx │ │ │ │ ├── NoAnimRangeSlider.tsx │ │ │ │ ├── RightPanel/ │ │ │ │ │ ├── RightPanel.tsx │ │ │ │ │ ├── SummaryTask.tsx │ │ │ │ │ ├── index.ts │ │ │ │ │ └── state/ │ │ │ │ │ ├── actions.ts │ │ │ │ │ ├── guards.ts │ │ │ │ │ ├── hook.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── machine.ts │ │ │ │ │ ├── services.ts │ │ │ │ │ └── types.ts │ │ │ │ ├── TaskList/ │ │ │ │ │ ├── StatusSelect.tsx │ │ │ │ │ ├── TaskList.tsx │ │ │ │ │ ├── index.ts │ │ │ │ │ └── state/ │ │ │ │ │ ├── actions.ts │ │ │ │ │ ├── hook.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── machine.ts │ │ │ │ │ ├── services.ts │ │ │ │ │ └── types.ts │ │ │ │ ├── TaskLogs.tsx │ │ │ │ ├── TaskSummary.tsx │ │ │ │ ├── Timeline.jsx │ │ │ │ ├── Timeline.test.ts │ │ │ │ ├── UpdateTaskStatusForm.tsx │ │ │ │ ├── WorkflowIntrospection.tsx │ │ │ │ ├── componentHelpers.tsx │ │ │ │ ├── helpers.test.ts │ │ │ │ ├── helpers.ts │ │ │ │ ├── index.ts │ │ │ │ ├── state/ │ │ │ │ │ ├── FlowExecutionContext/ │ │ │ │ │ │ ├── FlowExecutionContext.tsx │ │ │ │ │ │ ├── FlowExecutionProvider.tsx │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── types.ts │ │ │ │ │ ├── StatusMapTypes.ts │ │ │ │ │ ├── actions.ts │ │ │ │ │ ├── constants.ts │ │ │ │ │ ├── countdownActions.ts │ │ │ │ │ ├── countdownMachine.ts │ │ │ │ │ ├── executionMapper.test.js │ │ │ │ │ ├── executionMapper.ts │ │ │ │ │ ├── guards.ts │ │ │ │ │ ├── hook.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── machine.ts │ │ │ │ │ ├── sampleExecutions.js │ │ │ │ │ ├── services.ts │ │ │ │ │ └── types.ts │ │ │ │ ├── timeline.scss │ │ │ │ └── timelineUtils.ts │ │ │ ├── executions/ │ │ │ │ ├── ApiSearchModalIntegration.tsx │ │ │ │ ├── BulkActionModule.tsx │ │ │ │ ├── DateControlComponent.tsx │ │ │ │ ├── DatePickerComponent.tsx │ │ │ │ ├── ResultsTable.tsx │ │ │ │ ├── SchedulerApiSearchModal.tsx │ │ │ │ ├── SchedulerExecutions.tsx │ │ │ │ ├── SchedulerResultsTable.tsx │ │ │ │ ├── SearchExampleQuery.tsx │ │ │ │ ├── SplitWorkflowDefinitionButton/ │ │ │ │ │ ├── ImportBPNFileDialog.tsx │ │ │ │ │ ├── SplitWorkflowDefinitionButton.tsx │ │ │ │ │ └── hook.ts │ │ │ │ ├── Task/ │ │ │ │ │ ├── AdvanceSearch.tsx │ │ │ │ │ ├── BasicSearch.tsx │ │ │ │ │ ├── SwitchComponent.tsx │ │ │ │ │ └── TaskApiSearchModal.tsx │ │ │ │ ├── TaskResultsTable.tsx │ │ │ │ ├── TaskSearch.tsx │ │ │ │ ├── WorkflowSearch.tsx │ │ │ │ ├── executionsStyles.ts │ │ │ │ ├── index.ts │ │ │ │ └── workflowSearchComponents/ │ │ │ │ ├── AdvancedSearch.tsx │ │ │ │ └── BasicSearch.tsx │ │ │ ├── kitchensink/ │ │ │ │ ├── DataTableDemo.jsx │ │ │ │ ├── EnhancedTable.jsx │ │ │ │ ├── Examples.jsx │ │ │ │ ├── Gantt.jsx │ │ │ │ ├── KitchenSink.jsx │ │ │ │ ├── ThemeSampler.jsx │ │ │ │ └── sampleMovieData.js │ │ │ ├── queueMonitor/ │ │ │ │ ├── PollDataTable.tsx │ │ │ │ ├── PollWorkerDetails.tsx │ │ │ │ ├── QuickSearchAndRefresh.tsx │ │ │ │ ├── TaskQueue.tsx │ │ │ │ ├── filter/ │ │ │ │ │ ├── FilterSection.tsx │ │ │ │ │ ├── hook.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── helpers.ts │ │ │ │ ├── refresher/ │ │ │ │ │ ├── RefreshOptions.tsx │ │ │ │ │ ├── index.ts │ │ │ │ │ └── state/ │ │ │ │ │ ├── actions.ts │ │ │ │ │ ├── guards.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── machine.ts │ │ │ │ │ └── types.ts │ │ │ │ └── state/ │ │ │ │ ├── QueueMonitorContext/ │ │ │ │ │ ├── QueueMonitorContext.tsx │ │ │ │ │ ├── QueueMonitorProvider.tsx │ │ │ │ │ ├── index.ts │ │ │ │ │ └── types.ts │ │ │ │ ├── actions.ts │ │ │ │ ├── guards.ts │ │ │ │ ├── hook.ts │ │ │ │ ├── index.ts │ │ │ │ ├── machine.ts │ │ │ │ ├── service.ts │ │ │ │ └── types.ts │ │ │ ├── runWorkflow/ │ │ │ │ ├── IdempotencyForm.tsx │ │ │ │ ├── RunWorkflow.tsx │ │ │ │ ├── RunWorkflowApiSearchModal.tsx │ │ │ │ ├── index.ts │ │ │ │ ├── runWorkflowUtils.ts │ │ │ │ └── types.ts │ │ │ ├── scheduler/ │ │ │ │ ├── CronExpressionHelp.tsx │ │ │ │ ├── SaveProtectionPrompt.tsx │ │ │ │ ├── Schedule.tsx │ │ │ │ ├── ScheduleButtons.tsx │ │ │ │ ├── ScheduleDiffEditor.jsx │ │ │ │ ├── TimezonePicker.tsx │ │ │ │ ├── __tests__/ │ │ │ │ │ └── Schedule.test.tsx │ │ │ │ ├── components/ │ │ │ │ │ ├── CronExpressionSection.tsx │ │ │ │ │ ├── ScheduleTimingSection.tsx │ │ │ │ │ └── WorkflowConfigSection.tsx │ │ │ │ ├── constants.ts │ │ │ │ ├── hooks/ │ │ │ │ │ ├── useCronExpression.ts │ │ │ │ │ ├── useScheduleFormHandlers.ts │ │ │ │ │ ├── useScheduleState.ts │ │ │ │ │ └── useWorkflowConfig.ts │ │ │ │ ├── index.ts │ │ │ │ ├── schedulerHooks.js │ │ │ │ ├── timezones.json │ │ │ │ └── utils/ │ │ │ │ └── scheduleTransformers.ts │ │ │ ├── styles.js │ │ │ └── tags/ │ │ │ ├── TagsDashboard.tsx │ │ │ └── TagsList.jsx │ │ ├── plugins/ │ │ │ ├── AppBarModules.jsx │ │ │ ├── AppLogo.jsx │ │ │ ├── ConductorLogo.jsx │ │ │ ├── constants.js │ │ │ ├── customTypeRenderers.jsx │ │ │ ├── env.js │ │ │ ├── fetch.ts │ │ │ ├── index.ts │ │ │ └── registry/ │ │ │ ├── index.ts │ │ │ ├── registry.ts │ │ │ └── types.ts │ │ ├── queryClient.ts │ │ ├── routes/ │ │ │ ├── __tests__/ │ │ │ │ ├── router.test.tsx │ │ │ │ └── test-utils.tsx │ │ │ ├── router.tsx │ │ │ └── routes.tsx │ │ ├── setupTests.ts │ │ ├── shared/ │ │ │ ├── BaseLayout.tsx │ │ │ ├── BlockNavigationWithConfirmation.tsx │ │ │ ├── CodeModal/ │ │ │ │ ├── curlHeader.ts │ │ │ │ ├── hook.ts │ │ │ │ └── types.ts │ │ │ ├── PersistableSidebar/ │ │ │ │ └── state/ │ │ │ │ ├── actions.ts │ │ │ │ ├── hook.ts │ │ │ │ ├── machine.ts │ │ │ │ ├── services.ts │ │ │ │ └── types.ts │ │ │ ├── SectionContainer.tsx │ │ │ ├── SectionHeader.tsx │ │ │ ├── SectionHeaderActions.tsx │ │ │ ├── SideAndTopBarsLayout.tsx │ │ │ ├── UserSettingsContext.ts │ │ │ ├── UserSettingsProvider.tsx │ │ │ ├── ZoomControlsButton.tsx │ │ │ ├── agent/ │ │ │ │ ├── agentAtomsStore.ts │ │ │ │ └── useAiContext.ts │ │ │ ├── auth/ │ │ │ │ ├── AuthProvider.tsx │ │ │ │ ├── NoAuthProvider/ │ │ │ │ │ ├── NoAuthProvider.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── constants.ts │ │ │ │ ├── context.ts │ │ │ │ ├── index.ts │ │ │ │ ├── silentRefresh.ts │ │ │ │ ├── tokenManagerJotai.ts │ │ │ │ ├── types.ts │ │ │ │ └── useAuth.ts │ │ │ ├── createAndDisplayApplication/ │ │ │ │ ├── MetadataBanner.tsx │ │ │ │ └── state/ │ │ │ │ ├── actions.ts │ │ │ │ ├── guards.ts │ │ │ │ ├── machine.ts │ │ │ │ ├── services.ts │ │ │ │ └── types.ts │ │ │ ├── editor.ts │ │ │ ├── icons/ │ │ │ │ └── FitToFrame.tsx │ │ │ ├── state/ │ │ │ │ ├── index.ts │ │ │ │ ├── machine.ts │ │ │ │ ├── selectors.ts │ │ │ │ ├── types.ts │ │ │ │ └── userSettingsMachine/ │ │ │ │ ├── actions.ts │ │ │ │ ├── guards.ts │ │ │ │ ├── index.ts │ │ │ │ ├── machine.ts │ │ │ │ ├── services.ts │ │ │ │ └── types.ts │ │ │ ├── styles.ts │ │ │ ├── useSaveProtection.ts │ │ │ └── useUserSettings.ts │ │ ├── templates/ │ │ │ └── JSONSchemaWorkflow.js │ │ ├── testData/ │ │ │ └── diagramTests.js │ │ ├── theme/ │ │ │ ├── index.ts │ │ │ ├── material/ │ │ │ │ ├── ColorModeContext/ │ │ │ │ │ ├── ColorModeContext.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── baseTheme.ts │ │ │ │ ├── components/ │ │ │ │ │ ├── appBar.ts │ │ │ │ │ ├── atoms.ts │ │ │ │ │ ├── buttons.ts │ │ │ │ │ ├── buttonsGroup.ts │ │ │ │ │ ├── dropdownsMenusPopovers.ts │ │ │ │ │ ├── formControls.ts │ │ │ │ │ ├── modals.ts │ │ │ │ │ ├── paper.ts │ │ │ │ │ ├── tables.ts │ │ │ │ │ └── tabs.ts │ │ │ │ ├── getPaletteForMode.ts │ │ │ │ ├── provider.tsx │ │ │ │ └── types/ │ │ │ │ └── Palette.d.ts │ │ │ ├── theme.ts │ │ │ └── tokens/ │ │ │ ├── colorOverrides.ts │ │ │ ├── colors.js │ │ │ ├── globalConstants.js │ │ │ ├── orkes-theme.js │ │ │ └── variables.ts │ │ ├── types/ │ │ │ ├── Application.ts │ │ │ ├── CloudTemplateResults.ts │ │ │ ├── CloudTemplateType.ts │ │ │ ├── Crumbs.ts │ │ │ ├── EnvVariables.ts │ │ │ ├── Environment.ts │ │ │ ├── Events.ts │ │ │ ├── Execution.ts │ │ │ ├── FormFieldTypes.ts │ │ │ ├── HumanTaskTypes.ts │ │ │ ├── Integrations.ts │ │ │ ├── Messages.ts │ │ │ ├── MetricsTypes.ts │ │ │ ├── Prompts.ts │ │ │ ├── RemoteServiceTypes.ts │ │ │ ├── Schedulers.ts │ │ │ ├── SchemaDefinition.ts │ │ │ ├── Schemas.ts │ │ │ ├── SchemasAjv.ts │ │ │ ├── Secret.ts │ │ │ ├── ServiceDefinition.ts │ │ │ ├── Tag.ts │ │ │ ├── TaskDefinition.ts │ │ │ ├── TaskExecution.ts │ │ │ ├── TaskLog.ts │ │ │ ├── TaskStatus.ts │ │ │ ├── TaskType.ts │ │ │ ├── TestTaskTypes.ts │ │ │ ├── TimeoutPolicy.ts │ │ │ ├── UpdateTaskStatus.ts │ │ │ ├── User.ts │ │ │ ├── WebhookDefinition.ts │ │ │ ├── WorkflowDef.ts │ │ │ ├── WorkflowExecution.ts │ │ │ ├── common.ts │ │ │ ├── helperTypes.ts │ │ │ ├── index.ts │ │ │ └── svg.d.ts │ │ ├── useArrowNavigation.tsx │ │ └── utils/ │ │ ├── __tests__/ │ │ │ ├── date.test.ts │ │ │ ├── json.test.ts │ │ │ ├── object.test.ts │ │ │ ├── string.test.ts │ │ │ ├── toMaybeQueryString.test.ts │ │ │ ├── typeHelpers.test.ts │ │ │ ├── utils.test.ts │ │ │ └── workflow.test.ts │ │ ├── accessControl.ts │ │ ├── array.ts │ │ ├── checkPathFlag.ts │ │ ├── cloudTemplates.ts │ │ ├── constants/ │ │ │ ├── api.ts │ │ │ ├── common.ts │ │ │ ├── dateTimePicker.ts │ │ │ ├── docLink.ts │ │ │ ├── emailContentTypeSuggestions.ts │ │ │ ├── event.ts │ │ │ ├── httpStatusCode.ts │ │ │ ├── httpSuggestions.ts │ │ │ ├── index.ts │ │ │ ├── jsonSchema.ts │ │ │ ├── regex.ts │ │ │ ├── route.ts │ │ │ ├── switch.ts │ │ │ ├── task.ts │ │ │ ├── webhook.ts │ │ │ ├── workflow.ts │ │ │ └── workflowScheduleExecution.ts │ │ ├── constants.ts │ │ ├── cronHelpers.ts │ │ ├── date.ts │ │ ├── deprecatedRadioFilter.ts │ │ ├── fieldHelpers.tsx │ │ ├── flags.ts │ │ ├── gtag.ts │ │ ├── handleValidChars.ts │ │ ├── helpers.ts │ │ ├── hooks/ │ │ │ ├── index.ts │ │ │ ├── useAutoCompleteInputValidation.ts │ │ │ ├── useBatchedTagsData.ts │ │ │ ├── useConductorProjectBuilder.ts │ │ │ ├── useCustomPagination.ts │ │ │ ├── useEditorForm.ts │ │ │ ├── useEntityAvailableVersions.ts │ │ │ ├── useEventNameSuggestions.ts │ │ │ ├── useGetEntities.ts │ │ │ ├── useGetEnvironmentVariables.ts │ │ │ ├── useGetIntegrations.ts │ │ │ ├── useGetSchedulerDefinitions.ts │ │ │ ├── useGetSchemas.ts │ │ │ ├── useGetSecrets.ts │ │ │ ├── useMCPIntegrations.ts │ │ │ ├── usePushHistory.ts │ │ │ ├── useReplaceHistory.ts │ │ │ ├── useToastMessage.ts │ │ │ ├── useWorkflowNamesAndVersionsQuery.ts │ │ │ └── useXStateEventListener.ts │ │ ├── httpStatus.ts │ │ ├── human.ts │ │ ├── index.ts │ │ ├── json.ts │ │ ├── jsonSchema.ts │ │ ├── localstorage.ts │ │ ├── logger.ts │ │ ├── logrocket.ts │ │ ├── maybeTriggerWorkflow.ts │ │ ├── monacoUtils/ │ │ │ ├── CodeEditorUtils.ts │ │ │ └── promql.ts │ │ ├── monitoring.ts │ │ ├── object.ts │ │ ├── pipe.ts │ │ ├── query.ts │ │ ├── reactHookForm.ts │ │ ├── regex.ts │ │ ├── releaseVersion.ts │ │ ├── remoteServices.ts │ │ ├── roles.ts │ │ ├── strings.ts │ │ ├── task.ts │ │ ├── themeVariables.ts │ │ ├── toMaybeQueryString.ts │ │ ├── tracker.tsx │ │ ├── useGetGroups.ts │ │ ├── useGetUsers.ts │ │ ├── useIntegrationProviders.ts │ │ ├── useInterval.ts │ │ ├── useLazyWorkflowNameAutoComplete.ts │ │ ├── utils.ts │ │ └── workflow.ts │ ├── tsconfig.json │ ├── vite-plugin-csp-nonce.ts │ └── vite.config.ts ├── venv/ │ └── pyvenv.cfg └── workflow-event-listener/ ├── README.md ├── build.gradle └── src/ ├── main/ │ ├── java/ │ │ └── com/ │ │ └── netflix/ │ │ └── conductor/ │ │ └── contribs/ │ │ └── listener/ │ │ ├── archive/ │ │ │ ├── ArchivingWithTTLWorkflowStatusListener.java │ │ │ ├── ArchivingWorkflowListenerConfiguration.java │ │ │ ├── ArchivingWorkflowListenerProperties.java │ │ │ ├── ArchivingWorkflowStatusListener.java │ │ │ └── ArchivingWorkflowToS3.java │ │ ├── conductorqueue/ │ │ │ ├── ConductorQueueStatusPublisher.java │ │ │ ├── ConductorQueueStatusPublisherConfiguration.java │ │ │ └── ConductorQueueStatusPublisherProperties.java │ │ ├── kafka/ │ │ │ ├── KafkaWorkflowStatusPublisher.java │ │ │ ├── KafkaWorkflowStatusPublisherConfiguration.java │ │ │ └── KafkaWorkflowStatusPublisherProperties.java │ │ └── statuschange/ │ │ ├── StatusChangeNotification.java │ │ ├── StatusChangePublisher.java │ │ └── StatusChangePublisherConfiguration.java │ └── resources/ │ └── META-INF/ │ └── additional-spring-configuration-metadata.json └── test/ ├── java/ │ └── com/ │ └── netflix/ │ └── conductor/ │ ├── contribs/ │ │ └── listener/ │ │ ├── ArchivingWorkflowStatusListenerTest.java │ │ └── statuschange/ │ │ └── StatusChangePublisherTest.java │ └── test/ │ └── listener/ │ └── WorkflowStatusPublisherIntegrationTest.java └── resources/ └── application-integrationtest.properties ================================================ FILE CONTENTS ================================================ ================================================ FILE: .claude/agents/docs-writer.md ================================================ --- name: docs-writer description: Technical documentation specialist for Conductor workflow orchestration features. Creates clear, comprehensive documentation for APIs, workflows, tasks, and system architecture. tools: Read, Grep, Glob, Write, Edit, Bash model: inherit --- You are a technical documentation specialist for Conductor, an open-source workflow orchestration engine built at Netflix. ## Your Role Create clear, comprehensive, and accurate documentation for Conductor features, including: - Workflow definitions and task types - REST API endpoints and payloads - System architecture and components - Configuration options and database integrations - SDK usage examples (Java, Python, JavaScript, Go, C#) - Developer guides and tutorials ## Documentation Process 1. **Understand the Feature** - Read relevant source code to understand implementation - Identify key classes, methods, and APIs - Test functionality if possible - Review existing related documentation 2. **Structure Documentation** - Start with a clear overview/summary - Include purpose and use cases - Provide syntax and parameters - Add practical examples - Document edge cases and limitations - Link to related documentation 3. **Follow Conductor Style** - Use clear, concise language - Include code examples in relevant languages - Use Markdown formatting consistently - Add diagrams or JSON examples for workflows - Follow existing documentation patterns in `/docs` 4. **Quality Standards** - Ensure technical accuracy - Test all code examples - Use proper terminology (workflows, tasks, workers, etc.) - Include error handling examples - Add troubleshooting sections when relevant ## Key Conductor Concepts to Reference - **Workflows**: JSON-based orchestration definitions - **Tasks**: Units of work (HTTP, Lambda, Sub-workflow, etc.) - **Workers**: Services that execute tasks - **Task Definitions**: Reusable task configurations - **System Tasks**: Built-in task types - **Event Handlers**: Trigger workflows from events ## Output Format Provide documentation in Markdown format suitable for the `/docs` directory, with: - Clear headings and sections - Code blocks with proper syntax highlighting - Tables for parameters and options - Links to related documentation - Version information when relevant Always prioritize clarity and practical usefulness for developers using Conductor. ================================================ FILE: .dockerignore ================================================ # Git/VCS .git .gitignore .gitattributes .github # IDE/editor .idea .vscode .classpath .project .settings *.iml # OS/filesystem noise .DS_Store # Caches & temp **/.gradle **/.cache **/tmp **/logs **/*.log # Build outputs (keep source in docker build) **/build **/out **/target **/dist **/coverage # Python venv **/__pycache__/ **/.pytest_cache/ # JS tooling **/node_modules **/.npm **/.yarn **/.pnpm-store **/.eslintcache **/.parcel-cache **/.next # UI build artifacts (explicit) ui/build ================================================ FILE: .gitattributes ================================================ gradlew eol=lf *.gradle eol=lf *.java eol=lf *.groovy eol=lf spring.factories eol=lf *.sh eol=lf docs/* linguist-documentation server/src/main/resources/swagger-ui/* linguist-vendored ================================================ FILE: .github/ISSUE_TEMPLATE/bug_report.md ================================================ --- name: Bug report about: Create a report to help us improve title: "" labels: 'type: bug' assignees: '' --- **Describe the bug** A clear and concise description of what the bug is. **Details** Conductor version: Persistence implementation: Cassandra, Postgres, MySQL, Dynomite etc Queue implementation: Postgres, MySQL, Dynoqueues etc Lock: Redis or Zookeeper? Workflow definition: Task definition: Event handler definition: **To Reproduce** Steps to reproduce the behavior: 1. Go to '...' 2. Click on '....' 3. Scroll down to '....' 4. See error **Expected behavior** A clear and concise description of what you expected to happen. **Screenshots** If applicable, add screenshots to help explain your problem. **Additional context** Add any other context about the problem here. ================================================ FILE: .github/ISSUE_TEMPLATE/bug_report.yml ================================================ name: Bug Report description: Create a report to help us reproduce and fix the bug body: - type: markdown attributes: value: > #### Before submitting a bug, please make sure the issue hasn't been already addressed by searching through [the existing and past issues](https://github.com/conductor-oss/conductor/issues?q=is%3Aissue%20label%3Abug). - type: textarea attributes: label: Describe the bug description: | Please provide a clear and concise description of what the bug is. If relevant, add a minimal example so that we can reproduce the error by running the code. It is very important for the snippet to be as succinct (minimal) as possible, so please take time to trim down any irrelevant code to help us debug efficiently. Your example should be fully self-contained and not rely on any artifact that should be downloaded. For example: ```python # All necessary imports at the beginning import os import re # A succinct reproducing example trimmed down to the essential parts: xxxxx ``` If the code is too long (hopefully, it isn't), feel free to put it in a public gist and link it in the issue: https://gist.github.com. Please also paste or describe the results you observe instead of the expected results. If you observe an error, please paste the error message including the **full** traceback of the exception. It may be relevant to wrap error messages in ```` ```triple quotes blocks``` ````. placeholder: | A clear and concise description of what the bug is. ```python # Sample code to reproduce the problem ``` ``` The error message you got, with the full traceback. ``` validations: required: true - type: markdown attributes: value: > Thanks for contributing! ================================================ FILE: .github/ISSUE_TEMPLATE/config.yml ================================================ blank_issues_enabled: true contact_links: - name: Questions url: https://orkes-conductor.slack.com/join/shared_invite/zt-2vdbx239s-Eacdyqya9giNLHfrCavfaA#/shared-invite/email about: Ask questions and discuss with other Conductor community members ================================================ FILE: .github/ISSUE_TEMPLATE/documentation.md ================================================ --- name: Documentation about: Something in the documentation that needs improvement title: "[DOC]: " labels: 'type: docs' assignees: '' --- ## What are you missing in the docs ## Proposed text ================================================ FILE: .github/ISSUE_TEMPLATE/documentation.yaml ================================================ name: Documentation description: Report an issue related to https://docs.conductor-oss.org/index.html body: - type: markdown attributes: value: > #### Note: Please report your documentation issue in English to ensure it can be understood and addressed by the development team. - type: textarea attributes: label: The doc issue description: > A clear and concise description of what content on https://docs.conductor-oss.org/index.html is an issue. validations: required: true - type: textarea attributes: label: Suggest a potential alternative/fix description: > Tell us how we could improve the documentation in this regard. - type: markdown attributes: value: > Thanks for contributing! ================================================ FILE: .github/ISSUE_TEMPLATE/feature_request.md ================================================ --- name: Feature request about: Propose a new feature title: "[FEATURE]: " labels: 'type: feature' assignees: '' --- Please read our [contributor guide](https://github.com/conductor-oss/conductor/blob/main/CONTRIBUTING.md) before creating an issue. Also consider discussing your idea on the [discussion forum](https://github.com/conductor-oss/conductor/discussions) first. ## Describe the Feature Request _A clear and concise description of what the feature request is._ ## Describe Preferred Solution _A clear and concise description of what you want to happen._ ## Describe Alternatives _A clear and concise description of any alternative solutions or features you've considered._ ================================================ FILE: .github/ISSUE_TEMPLATE/feature_request.yaml ================================================ name: Feature request description: Submit a proposal/request for a new Conductor feature body: - type: markdown attributes: value: > #### Note: Please write your feature request in English to ensure it can be understood and addressed by the development team. - type: textarea attributes: label: The feature, motivation and pitch description: > A clear and concise description of the feature proposal. Please outline the motivation for the proposal. Is your feature request related to a specific problem? e.g., *"I'm working on X and would like Y to be possible"*. If this is related to another GitHub issue, please link here too. validations: required: true - type: textarea attributes: label: Alternatives description: > A description of any alternative solutions or features you've considered, if any. - type: textarea attributes: label: Additional context description: > Add any other context or screenshots about the feature request. - type: markdown attributes: value: > Thanks for contributing! ================================================ FILE: .github/dependabot.yml ================================================ version: 2 updates: - package-ecosystem: "gradle" directory: "/" schedule: interval: "weekly" reviewers: - "v1r3n" - "boney9" - "c4lm" - package-ecosystem: "github-actions" directory: "/" schedule: interval: "weekly" ================================================ FILE: .github/pull_request_template.md ================================================ Pull Request type ---- - [ ] Bugfix - [ ] Feature - [ ] Refactoring (no functional changes, no api changes) - [ ] Build related changes - [ ] WHOSUSING.md - [ ] Other (please describe): **NOTE**: Please remember to run `./gradlew spotlessApply` to fix any format violations. Changes in this PR ---- _Describe the new behavior from this PR, and why it's needed_ Issue # Alternatives considered ---- _Describe alternative implementation you have considered_ ================================================ FILE: .github/release-drafter.yml ================================================ template: | ## What’s Changed $CHANGES name-template: 'v$RESOLVED_VERSION' tag-template: 'v$RESOLVED_VERSION' categories: - title: 'IMPORTANT' label: 'type: important' - title: 'New' label: 'type: feature' - title: 'Bug Fixes' label: 'type: bug' - title: 'Refactor' label: 'type: maintenance' - title: 'Documentation' label: 'type: docs' - title: 'Dependency Updates' label: 'type: dependencies' version-resolver: minor: labels: - 'type: important' patch: labels: - 'type: bug' - 'type: maintenance' - 'type: docs' - 'type: dependencies' - 'type: feature' exclude-labels: - 'skip-changelog' - 'gradle-wrapper' - 'github_actions' ================================================ FILE: .github/workflows/ci.yml ================================================ name: CI on: push: paths-ignore: - "conductor-clients/**" pull_request: paths-ignore: - "conductor-clients/**" jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 with: ref: ${{ github.event.pull_request.head.sha }} fetch-depth: 0 - name: Gradle wrapper validation uses: gradle/wrapper-validation-action@v3 - name: Set up Zulu JDK 21 uses: actions/setup-java@v5 with: distribution: "zulu" java-version: "21" - name: Cache SonarCloud packages uses: actions/cache@v5 with: path: ~/.sonar/cache key: ${{ runner.os }}-sonar restore-keys: ${{ runner.os }}-sonar - name: Cache Gradle packages uses: actions/cache@v5 with: path: | ~/.gradle/caches ~/.gradle/wrapper key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} restore-keys: ${{ runner.os }}-gradle- - name: Force Docker API Version run: echo 'api.version=1.44' > ~/.docker-java.properties - name: Build with Gradle if: github.ref != 'refs/heads/main' env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} run: | ./gradlew build --scan - name: Build and Publish snapshot if: github.event_name != 'pull_request' && github.ref == 'refs/heads/main' run: | echo "Running build for commit ${{ github.sha }}" ./gradlew build - name: Publish Test Report uses: mikepenz/action-junit-report@v6 if: always() with: report_paths: "**/build/test-results/test/TEST-*.xml" - name: Upload build artifacts uses: actions/upload-artifact@v6 with: name: build-artifacts path: "**/build/reports" - name: Store Buildscan URL uses: actions/upload-artifact@v6 with: name: build-scan path: "buildscan.log" build-ui: runs-on: ubuntu-latest container: cypress/browsers:node-22.11.0-chrome-130.0.6723.116-1-ff-132.0.1-edge-130.0.2849.68-1 defaults: run: working-directory: ui steps: - uses: actions/checkout@v6 - name: Install Dependencies run: yarn install - name: Build UI run: yarn run build - name: Run E2E Tests uses: cypress-io/github-action@v7 with: working-directory: ui install: false start: yarn run serve-build wait-on: "http://localhost:5000" - name: Run Component Tests uses: cypress-io/github-action@v7 with: working-directory: ui install: false component: true - name: Archive test screenshots uses: actions/upload-artifact@v6 if: failure() with: name: cypress-screenshots path: ui/cypress/screenshots - name: Archive test videos uses: actions/upload-artifact@v6 if: always() with: name: cypress-videos path: ui/cypress/videos ================================================ FILE: .github/workflows/debug-docker-credentials.yml ================================================ name: Debug Docker Credentials on: workflow_dispatch: jobs: check-docker-user: runs-on: ubuntu-latest steps: - name: Check Docker Hub user for API key env: DOCKER_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }} DOCKER_PASSWORD: ${{ secrets.DOCKERHUB_TOKEN }} run: | echo "Fetching JWT from Docker Hub..." RESPONSE=$(curl -s -X POST \ -H "Content-Type: application/json" \ -d "{\"username\": \"${DOCKER_USERNAME}\", \"password\": \"${DOCKER_PASSWORD}\"}" \ https://hub.docker.com/v2/users/login) JWT=$(echo "$RESPONSE" | jq -r '.token // empty') if [ -z "$JWT" ]; then echo "Login failed. Response:" echo "$RESPONSE" | jq . exit 1 fi echo "Login successful. Fetching user info..." USER_INFO=$(curl -s -H "Authorization: Bearer $JWT" https://hub.docker.com/v2/user/) echo "Raw response:" echo "$USER_INFO" | jq . echo "Docker Hub account info:" echo "$USER_INFO" | jq '{username: .username, full_name: .full_name, email: .email, company: .company, date_joined: .date_joined}' ================================================ FILE: .github/workflows/generate_gh_pages.yml ================================================ name: Publish docs via GitHub Pages permissions: contents: write on: push: branches: - main workflow_dispatch: jobs: build: name: Deploy docs runs-on: ubuntu-latest steps: - name: Checkout main uses: actions/checkout@v6 - name: Deploy docs uses: mhausenblas/mkdocs-deploy-gh-pages@master env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} CONFIG_FILE: mkdocs.yml REQUIREMENTS: requirements.txt ================================================ FILE: .github/workflows/publish.yml ================================================ name: Publish Conductor OSS toMaven Central on: release: types: - released - prereleased workflow_dispatch: inputs: version: description: 'Version to publish (e.g., v1.0.0)' required: true permissions: contents: read jobs: publish: runs-on: ubuntu-latest name: Gradle Build and Publish steps: - uses: actions/checkout@v6 - name: Set up Zulu JDK 21 uses: actions/setup-java@v5 with: distribution: 'zulu' java-version: '21' - name: Cache Gradle packages uses: actions/cache@v5 with: path: | ~/.gradle/caches ~/.gradle/wrapper key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} restore-keys: | ${{ runner.os }}-gradle- - name: Publish release run: | export VERSION="${{github.ref_name}}" export PUBLISH_VERSION=`echo ${VERSION:1}` echo Publishing version $PUBLISH_VERSION ./gradlew publish -PmavenCentral -Pversion=$PUBLISH_VERSION -Pusername=${{ secrets.SONATYPE_USERNAME }} -Ppassword=${{ secrets.SONATYPE_PASSWORD }} env: ORG_GRADLE_PROJECT_signingKeyId: ${{ secrets.SIGNING_KEY_ID }} ORG_GRADLE_PROJECT_signingKey: ${{ secrets.SIGNING_KEY }} ORG_GRADLE_PROJECT_signingPassword: ${{ secrets.SIGNING_PASSWORD }} publish-docker: runs-on: ubuntu-latest name: Gradle Build and Publish to Container Registry steps: - uses: actions/checkout@v6 - name: Set up Zulu JDK 21 uses: actions/setup-java@v5 with: distribution: 'zulu' java-version: '21' - name: Login to Docker Hub Container Registry uses: docker/login-action@v4 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - name: Build Server JAR run: | export VERSION="${{github.ref_name}}" export PUBLISH_VERSION=`echo ${VERSION:1}` echo "RELEASE_VERSION=$PUBLISH_VERSION" >> $GITHUB_ENV echo Publishing version $PUBLISH_VERSION ./gradlew :conductor-server:build -x test -x spotlessCheck -x shadowJar -x :conductor-os-persistence-v3:build \ -Pversion=$PUBLISH_VERSION - name: Set up Node.js uses: actions/setup-node@v6 with: node-version: 'lts/*' - name: Build UI run: | cd ui corepack enable && corepack prepare yarn@stable --activate export REACT_APP_MONACO_EDITOR_USING_CDN=false export REACT_APP_ENABLE_ERRORS_INSPECTOR=true yarn config set network-timeout 600000 -g yarn install && cp -r node_modules/monaco-editor public/ && yarn build - name: Stage artifacts for Docker build run: | mkdir -p docker/server/libs cp server/build/libs/*boot*.jar docker/server/libs/conductor-server.jar - name: Set up QEMU uses: docker/setup-qemu-action@v4 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v4 - name: Build and push Server uses: docker/build-push-action@v7 with: context: . file: docker/server/Dockerfile platforms: linux/arm64,linux/amd64 push: true build-args: | PREBUILT=true tags: | conductoross/conductor:${{ env.RELEASE_VERSION }} orkesio/orkes-conductor-community-standalone:${{ env.RELEASE_VERSION }} orkesio/orkes-conductor-community:${{ env.RELEASE_VERSION }} ${{ (github.event_name == 'release' && !github.event.release.prerelease) && 'conductoross/conductor:latest' || '' }} ${{ (github.event_name == 'release' && !github.event.release.prerelease) && 'orkesio/orkes-conductor-community-standalone:latest' || '' }} ${{ (github.event_name == 'release' && !github.event.release.prerelease) && 'orkesio/orkes-conductor-community:latest' || '' }} ================================================ FILE: .github/workflows/publish_build.yaml ================================================ name: Publish Conductor OSS Server Lite on: release: types: - released - prereleased workflow_dispatch: inputs: version: description: 'Version to publish (e.g., v1.0.0)' required: true permissions: contents: read jobs: publish: runs-on: ubuntu-latest name: Build and Publish the server-lite permissions: contents: write steps: - uses: actions/checkout@v6 - name: Set up Zulu JDK 21 uses: actions/setup-java@v5 with: distribution: 'zulu' java-version: '21' - name: Cache Gradle packages uses: actions/cache@v5 with: path: | ~/.gradle/caches ~/.gradle/wrapper key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} restore-keys: | ${{ runner.os }}-gradle- - name: Set version id: version run: | # Use inputs.version for workflow_dispatch, or ref_name for release events VERSION="${{ github.event.inputs.version || github.ref_name }}" # Strip the 'v' prefix if present PUBLISH_VERSION="${VERSION#v}" echo "version=$PUBLISH_VERSION" >> $GITHUB_OUTPUT echo "RELEASE_VERSION=$PUBLISH_VERSION" >> $GITHUB_ENV echo "Publishing version: $PUBLISH_VERSION" - name: Create Standalone server run: | cd server-lite # ./build_ui.sh ../gradlew clean build -x test -Pversion=${{ steps.version.outputs.version }} - name: Prepare JAR for distribution run: | # Find the standalone JAR and copy with standardized names JAR_FILE=$(find server-lite/build/libs -name "*standalone.jar" | head -1) cp "$JAR_FILE" "server-lite/build/libs/conductor-lite-${{ steps.version.outputs.version }}.jar" # Create "latest" version for stable download link - only for Release if [[ "${{ github.event_name }}" == "release" && "${{ github.event.release.prerelease }}" == "false" ]]; then cp "$JAR_FILE" "server-lite/build/libs/conductor-server-lite-latest.jar" fi - name: Upload JARs to GitHub Release uses: softprops/action-gh-release@v2 with: tag_name: ${{ github.event.inputs.version || github.ref_name }} files: | server-lite/build/libs/conductor-lite-*.jar env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Build Server JAR run: | ./gradlew :conductor-server:build -x test -x spotlessCheck -x shadowJar -x :conductor-os-persistence-v3:build \ -Pversion=${{ steps.version.outputs.version }} - name: Set up Node.js uses: actions/setup-node@v6 with: node-version: 'lts/*' - name: Build UI run: | cd ui corepack enable && corepack prepare yarn@stable --activate export REACT_APP_MONACO_EDITOR_USING_CDN=false export REACT_APP_ENABLE_ERRORS_INSPECTOR=true yarn config set network-timeout 600000 -g yarn install && cp -r node_modules/monaco-editor public/ && yarn build - name: Stage artifacts for Docker build run: | mkdir -p docker/server/libs cp server/build/libs/*boot*.jar docker/server/libs/conductor-server.jar - name: Login to Docker Hub Container Registry uses: docker/login-action@v4 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - name: Set up QEMU uses: docker/setup-qemu-action@v4 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v4 - name: Build and push Server uses: docker/build-push-action@v7 with: context: . file: docker/server/Dockerfile platforms: linux/arm64,linux/amd64 push: true build-args: | PREBUILT=true tags: | conductoross/conductor:${{ env.RELEASE_VERSION }} orkesio/orkes-conductor-community-standalone:${{ env.RELEASE_VERSION }} orkesio/orkes-conductor-community:${{ env.RELEASE_VERSION }} ${{ (github.event_name == 'release' && !github.event.release.prerelease) && 'conductoross/conductor:latest' || '' }} ${{ (github.event_name == 'release' && !github.event.release.prerelease) && 'orkesio/orkes-conductor-community-standalone:latest' || '' }} ${{ (github.event_name == 'release' && !github.event.release.prerelease) && 'orkesio/orkes-conductor-community:latest' || '' }} ================================================ FILE: .github/workflows/publish_s3.yaml ================================================ name: Publish Conductor Server to S3 on: push: branches: - docker_build # TEMPORARY - remove before merging to main release: types: - released - prereleased workflow_dispatch: inputs: version: description: 'Version to publish (e.g., v1.0.0)' required: true permissions: contents: read jobs: publish-s3: runs-on: ubuntu-latest name: Build and Publish Server JAR to S3 steps: - uses: actions/checkout@v6 - name: Set up Zulu JDK 21 uses: actions/setup-java@v5 with: distribution: 'zulu' java-version: '21' - name: Cache Gradle packages uses: actions/cache@v4 with: path: | ~/.gradle/caches ~/.gradle/wrapper key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} restore-keys: | ${{ runner.os }}-gradle- - name: Set version id: version run: | # Use inputs.version for workflow_dispatch, or ref_name for release events VERSION="${{ github.event.inputs.version || github.ref_name }}" # Strip the 'v' prefix if present PUBLISH_VERSION="${VERSION#v}" echo "version=$PUBLISH_VERSION" >> $GITHUB_OUTPUT echo "Publishing version: $PUBLISH_VERSION" - name: Build Server module run: | ./build_ui.sh ./gradlew :conductor-server:bootJar -x test -Pversion=${{ steps.version.outputs.version }} - name: Configure AWS credentials uses: aws-actions/configure-aws-credentials@v6 with: aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} aws-region: ${{ secrets.AWS_REGION }} - name: Upload Server JAR to S3 (Versioned) run: | aws s3 cp server/build/libs/conductor-server-${{ steps.version.outputs.version }}-boot.jar \ s3://${{ secrets.AWS_S3_BUCKET }}/conductor-server-${{ steps.version.outputs.version }}.jar - name: Upload Server JAR to S3 (Latest) if: github.event_name == 'release' && !github.event.release.prerelease run: | aws s3 cp server/build/libs/conductor-server-${{ steps.version.outputs.version }}-boot.jar \ s3://${{ secrets.AWS_S3_BUCKET }}/conductor-server-latest.jar - name: Verify uploads run: | echo "Uploaded conductor-server-${{ steps.version.outputs.version }}.jar" echo "S3 bucket: ${{ secrets.AWS_S3_BUCKET }}" ================================================ FILE: .github/workflows/release_draft.yml ================================================ name: Release Drafter on: push: branches: - main paths-ignore: - 'conductor-clients/**' permissions: contents: read jobs: update_release_draft: permissions: contents: write # for release-drafter/release-drafter to create a github release pull-requests: write # for release-drafter/release-drafter to add label to PR runs-on: ubuntu-latest steps: - uses: release-drafter/release-drafter@v7 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} ================================================ FILE: .github/workflows/ui-next-ci.yml ================================================ name: UI v2 CI on: pull_request: branches: - main paths: - "ui-next/**" permissions: contents: read jobs: lint-format-test: name: Lint, Format & Test runs-on: ubuntu-latest defaults: run: working-directory: ui-next steps: - uses: actions/checkout@v6 - name: Setup Node.js uses: actions/setup-node@v6 with: node-version: 22 - name: Setup pnpm uses: pnpm/action-setup@v4 with: version: 10.32.0 - name: Get pnpm store directory id: pnpm-cache run: echo "store=$(pnpm store path)" >> $GITHUB_OUTPUT - name: Cache pnpm store uses: actions/cache@v4 with: path: ${{ steps.pnpm-cache.outputs.store }} key: ${{ runner.os }}-pnpm-${{ hashFiles('ui-next/pnpm-lock.yaml') }} restore-keys: ${{ runner.os }}-pnpm- - name: Install dependencies run: pnpm install --frozen-lockfile - name: Prettier check run: pnpm prettier:check - name: Lint run: pnpm lint - name: Type check run: pnpm typecheck - name: Test run: pnpm test - name: Build run: pnpm build ================================================ FILE: .gitignore ================================================ # Java Build .gradle .classpath dump.rdb out bin target buildscan.log /docs/site # Python /polyglot-clients/python/conductor.egg-info *.pyc # OS & IDE .DS_Store .settings .vscode .idea .project *.iml # JS & UI Related node_modules /ui/build /ui/public/monaco-editor # publishing secrets secrets/signing-key # local builds lib/ build/ */build/ # asdf version file .tool-versions # jenv version file .java-version .qodo conductorosstest.db conductorosstest.db /server-lite/src/main/resources/static yarn.lock .java-version server-lite/conductorosstest.db-shm server-lite/conductorosstest.db-wal /server/src/main/resources/static *.factorypath server/*.db* /site ================================================ FILE: .opencode/plans/video-generation-implementation.md ================================================ # Video Generation Implementation Plan - Phases 2-5 ## Decisions Made 1. **Full Spring AI mirror** for the video framework (PR-able to spring-ai) 2. **InputStream support** in DocumentLoader for streaming large video files 3. **Download bytes always** for Gemini Veo (don't pass through GCS URIs) 4. Phase 2 must complete first; then Phases 3, 4, 5 can proceed in any order --- ## Phase 2: Restructure Video Framework (Spring AI Pattern) All files in `ai/src/main/java/org/conductoross/conductor/ai/video/`. ### Type Hierarchy (mirroring Spring AI Image*) ``` ModelOptions (spring-ai marker) +-- VideoOptions (interface) ResultMetadata (spring-ai marker) +-- VideoGenerationMetadata (marker interface) MutableResponseMetadata (spring-ai class) +-- VideoResponseMetadata (class: jobId, status, errorMessage) ModelResult